假设我有一个标准的Python字符串(例如从中获取的字符串raw_input()),可能"2 + 2"是为了简单起见.
我想将这个字符串转换为Python中的标准数学运算,这样"2 + 2"就会返回4.
有没有一种简单的方法可以做到这一点,或者我是否必须拆分空格并手动解析每个数字/符号,然后根据我发现的数据进行数学运算?
我想要正则表达式吗?
为什么文字评估5 * 7失败,而5 + 7不是?
import ast
print(ast.literal_eval('5 + 7'))
# -> 12
print(ast.literal_eval('5 * 7'))
# ->
Traceback (most recent call last):
...
ValueError: malformed node or string: <_ast.BinOp object at ...>
Run Code Online (Sandbox Code Playgroud)
该文件没有解释这一点.
在SO上回答这个问题之后我发现了这个问题:得到一个字符串的结果.