我想知道是否有人知道一个很好的python库,用于计算基于文本的数学表达式。例如,
>>> evaluate("Three plus nine")
12
>>> evaluate("Eight + two")
10
我见过类似的例子,人们对字符串中的数值和操作符做过类似的操作。一种方法使用eval
来计算表达式的文字值。另一种方法是使用正则表达式来解析文本。
您可以尝试pyparsing
,它执行一般递归下降解析。实际上,这里的内容与第二个示例非常接近。
关于你的其他建议。
-
查看这里eval的安全问题(讽刺的是,将它用于计算器)
-
基本上,正则语言比下推自动机语言弱。你不应该试图用正则表达式来解决一般的解析树问题