Python解析数学文本表达式



我想知道是否有人知道一个很好的python库,用于计算基于文本的数学表达式。例如,

>>> evaluate("Three plus nine")
12
>>> evaluate("Eight + two")
10

我见过类似的例子,人们对字符串中的数值和操作符做过类似的操作。一种方法使用eval来计算表达式的文字值。另一种方法是使用正则表达式来解析文本。

如果没有一个现有的库可以很好地处理这个问题,我可能最终会使用regex和eval技术的组合来解决这个问题。我只是想确认一下,没有这样的东西已经存在了

您可以尝试pyparsing,它执行一般递归下降解析。实际上,这里的内容与第二个示例非常接近。

关于你的其他建议。

  • 查看这里eval的安全问题(讽刺的是,将它用于计算器)

  • 基本上,正则语言比下推自动机语言弱。你不应该试图用正则表达式来解决一般的解析树问题

最新更新