将字符串计算为值
在Python中,可以在字符串中计算一个表达式吗?
string_a = "4 ** (3 - 2)"
unknown_function(string_a) = 4
这可能吗?有没有什么函数可以模仿我例子中的“unknown_function”?
4 个回答
3
15
就像你之前的问题中提到的,sympy
是一个很有用的模块,这里也可以用到它:
>>> import sympy
>>> sympy.sympify("4**(3-2)")
4
甚至还可以这样做:
>>> sympy.sympify("2*x+y")
2*x + y
>>> sympy.sympify("2*x+y").subs(dict(x=2, y=3))
7
不过要注意,这样做会返回 sympy
对象。如果你想得到一个整数或者浮点数,你需要明确地进行转换:
>>> type(sympy.sympify("4**(3-2)"))
<class 'sympy.core.numbers.Integer'>
>>> int(sympy.sympify("4**(3-2)"))
4
我拼凑了一个方法,可以把字符串表达式变成函数,在这里可以看看,挺有意思的。
13