使用python计算字符串算术表达式

时间:2013-04-03 19:37:54

标签: python

我如何评估以下内容:

a=b=c=d=e=0  # initially

如果用户输入:

"a=b=4" as a string, it should modify the existing value.

所以结果会像a = 4,b = 4 如果用户输入:

"a=(c=4)*2", it should evaluate as expression and update the values.

所以结果会像a = 8,c = 4

括号可以进一步嵌套。

任何帮助都会非常感激。我正在使用python。

2 个答案:

答案 0 :(得分:3)

如果这是一个简单的控制台脚本,其中安全性无关紧要,您可以使用exec()来执行数学语句。但是,python不支持a=(c=4)*2之类的代码,因此不可能本机化。

然而exec()是一个巨大的安全漏洞,如果它正在运行,例如,一个Web服务器。如果预计会出现不受信任且潜在恶意的用户可以提交命令的情况,您应该考虑对其进行清理并自行解析,或者implementing sandboxing.

TL; DR 由于您正在处理不受支持的自定义命令,因此您应编写自己的解析器来处理和执行这些命令,而不必担心执行不受信任的代码。

答案 1 :(得分:1)

可能最好的方法是为这个特定的语法编写一个解析器(最糟糕的是涉及eval / exec的东西 - 向这些函数提交用户提供的内容是蠕虫的安全措施)。

看一下这个例子: