1

假设我有一个字符串

s="""

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

有什么模块或方法可以帮助我检查这个字符串的语法吗?

我希望输出如下:

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

我听说过 pyFlakes、pyChecker 和 pyLint,但它们检查的是文件,而不是字符串。

4

2 回答 2

6

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

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

但请记住:一个错误将阻止其他错误被报告,并且您的一些错误(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 回答