在Python中检查字符串的python语法?

时间:2012-06-13 00:59:31

标签: python

假设我有一个字符串

s="""

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

是否有可以帮助我检查此字符串语法的模块或方法?

我希望输出如下:

第2行,缩进 第3行,零除

我听说过pyFlakes,pyChecker和pyLint但是那些检查文件而不是字符串。

2 个答案:

答案 0 :(得分:5)

compile()函数会告诉你编译时错误:

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

请记住:一个错误会阻止报告其他错误,并且您的一些错误(ZeroDivision)是运行时错误,而不是编译器检测到的错误。

答案 1 :(得分: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