1

文字列があるとしましょう

s="""

print 'hi'
    print 'hi'
print 3333/0
"""

この文字列の構文をチェックするのに役立つモジュールまたは方法はありますか?

出力を次のようにしたい:

2 行目、インデント 3 行目、0 による除算

pyFlakes、pyChecker、pyLint について聞いたことがありますが、これらは文字列ではなくファイルをチェックします。

4

2 に答える 2

6

compile() 関数は、コンパイル時のエラーについて教えてくれます。

try:
    compile(s, "bogusfile.py", "exec")
except Exception as e:
    print "Problem: %s" % e

ただし、覚えておいてください: 1 つのエラーが他のエラーの報告を妨げます。エラーの一部 (ZeroDivision) は実行時エラーであり、コンパイラが検出するものではありません。

于 2012-06-13T01:04:53.723 に答える
1
s="""

print 'hi'
    print 'hi'
print 3333/0
"""
eval(s)

出力:

Traceback (most recent call last):
  File "prog.py", line 7, in <module>
    eval(s)
  File "<string>", line 3
    print 'hi'
        ^
SyntaxError: invalid syntax
于 2012-06-13T01:16:00.667 に答える