Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想测试一个字符串是否可以使用内置函数“eval”计算。我想在我的定义中提出一个条件。如果字符串可使用 eval 计算,我希望它产生 true,如果尝试“eval”字符串产生和错误,我希望它产生 false。有什么功能可以帮助我这样做吗?谢谢。
例子:
t="(8+(2-4)"
s="8+(2-4))"
eval(s) 将产生 6
eval(t) 会产生错误
我希望能够在我的定义中使用这两个条件,我期望 eval 表达式中的整数或错误
我假设您想在调用 eval() 之前检查语法。您可以尝试ast.parse,如其他答案中所述。
(该答案中给出的示例,以便于参考):
import ast def is_valid_python(code): try: ast.parse(code) except SyntaxError: return False return True >>> is_valid_python('1 // 2') True >>> is_valid_python('1 /// 2') False
def f(string): try: return eval(string) except: return False
我的直觉说要写一个 try 块:
def checkeval(foo): try: eval(foo) except: return False return True
证明:
>>> checkeval('(8+(2-4)') False >>> checkeval('(8+(2-4))') True