将字符串计算为值

Pau*_*ger 3 python string

Python中是否可以计算字符串中的术语?例如:

string_a = "4 ** (3 - 2)"

unknown_function(string_a) = 4
Run Code Online (Sandbox Code Playgroud)

这可能吗?在我的例子中是否有模仿"unknown_function"的函数?

DSM*_*DSM 11

就像上一个问题sympy的有用模块一样,它可以在这里应用:

>>> import sympy
>>> sympy.sympify("4**(3-2)")
4
Run Code Online (Sandbox Code Playgroud)

乃至

>>> sympy.sympify("2*x+y")
2*x + y
>>> sympy.sympify("2*x+y").subs(dict(x=2, y=3))
7
Run Code Online (Sandbox Code Playgroud)

请注意,这将返回sympy对象,如果要从中获取整数或浮点数,则应明确执行转换:

>>> type(sympy.sympify("4**(3-2)"))
<class 'sympy.core.numbers.Integer'>
>>> int(sympy.sympify("4**(3-2)"))
4
Run Code Online (Sandbox Code Playgroud)

我把一个食谱混合在一起,将字符串表达式转化为函数,这有点可爱.


Vol*_*ity 7

eval

eval(string_a)
# 4
Run Code Online (Sandbox Code Playgroud)

但是,如果string_a来自除了你之外的任何人,请不要在任何情况下使用它,因为它们很容易入侵你的系统并破坏你的文件!

  • +1提及安全风险.也许他只能过滤出数学操作数,括号和数字. (2认同)
  • @Vreality我的观点是它仍然是一个坏主意.它不适合这项工作. (2认同)