我有大约6000〜6500 Microsoft Word
.docx
文件与各类内他们格式化的回答脚本,顺序:从docx文件中提取python代码块并在沙箱中运行它们的安全方法是什么?
Python编程问题粗体部分
抢答齐全,形式法正确缩进,单间隔,自足代码
不幸的是,似乎没有固定模式将代码块与正常文本区分开来。从最初的50名左右的文件的一些例子:
整个问题的大胆,在这之后的代码开始突然,在 粗体/斜体
付诸表决,在评论,在这之后的代码会继续
完全缺失的问题,只是带有编号列表的代码表示开始
完全缺失的问题,用C/Python样式注释表示开始
等
现在,我通过python-docx
提取整个无格式文本like this:
doc = Document(infil)
# For Unicode handling.
new_paragraphs = []
for paragraph in doc.paragraphs:
new_paragraphs.append((paragraph.text).encode("utf-8"))
new_paragraphs = list(map(lambda x: convert(x), new_paragraphs))
with open(outfil, 'w', encoding='utf-8') as f:
print('\n'.join(new_paragraphs), file=f)
提取完毕,我会使用运行它们,我明白了PyPy Sandboxing feature是安全的然后像在比赛中一样分配点数。
我完全坚持的是如何以编程方式检测代码的开始和结束。大多数语言检测API是不需要的,因为我已经知道这种语言。这个问题:How to detect source code in a text?建议使用像Google Code Prettifier这样的短语和语法荧光笔,但它们不能解决检测单独程序的问题。
一个合适的解决方案from this programmers.se question似乎是在训练马尔可夫链,但在开始这么庞大的项目之前,我想要一些其他的意见。
此提取码也将在评估后提供给所有学生。
如果问题太宽泛或答案太明显,我表示歉意。