在Python中可以计算字符串中的术语吗?例如:
string_a = "4 ** (3 - 2)"
unknown_function(string_a) = 4这个是可能的吗?在我的例子中有没有模仿"unknown_function“的函数?
发布于 2013-02-03 10:04:57
有一个eval
eval(string_a)
# 4但是如果string_a来自除你之外的任何人,在任何情况下都不要使用这个,因为他们可以easily hack into your system and destroy your files!
发布于 2013-02-03 10:29:07
就像sympy对你的last question来说是一个有用的模块一样,它可以在这里应用:
>>> 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我拼凑出了一个将字符串表达式转换为函数here的方法,这有点可爱。
发布于 2013-02-03 10:02:55
可以,您可以使用eval函数。
>>> string_a = "4 ** (3 - 2)"
>>> eval(string_a)
4
>>> 您可以在documentation中阅读更多内容
https://stackoverflow.com/questions/14668750
复制相似问题