文字列があるとしましょう
s="""
print 'hi'
print 'hi'
print 3333/0
"""
この文字列の構文をチェックするのに役立つモジュールまたは方法はありますか?
出力を次のようにしたい:
2 行目、インデント 3 行目、0 による除算
pyFlakes、pyChecker、pyLint について聞いたことがありますが、これらは文字列ではなくファイルをチェックします。
文字列があるとしましょう
s="""
print 'hi'
print 'hi'
print 3333/0
"""
この文字列の構文をチェックするのに役立つモジュールまたは方法はありますか?
出力を次のようにしたい:
2 行目、インデント 3 行目、0 による除算
pyFlakes、pyChecker、pyLint について聞いたことがありますが、これらは文字列ではなくファイルをチェックします。
compile() 関数は、コンパイル時のエラーについて教えてくれます。
try:
compile(s, "bogusfile.py", "exec")
except Exception as e:
print "Problem: %s" % e
ただし、覚えておいてください: 1 つのエラーが他のエラーの報告を妨げます。エラーの一部 (ZeroDivision) は実行時エラーであり、コンパイラが検出するものではありません。
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