我想知道是否有人知道一个好的python库来评估基于文本的数学表达式。例如,
>>> evaluate("Three plus nine")
12
>>> evaluate("Eight + two")
10
我已经看过人们为字符串中的数值和运算符所做的类似示例。 onMouseDown。并One method used eval
to compute the literal value of the expression。
如果没有现有的库可以处理这个问题,我可能会最终使用正则表达式和eval技术的组合。我只是想确认已经有类似的东西已经存在。
答案 0 :(得分:3)
您可以尝试pyparsing
,它执行一般的递归下降解析。事实上,here与你的第二个例子非常接近。
关于您的其他建议。
有关eval的安全问题,请参阅here(具有讽刺意味的是,将其用于计算器)。
从根本上说,regular languages are weaker than pushdown automata languages。你不应该试图用正则表达式来解决一般的解析树问题。