van*_*der 11 python math parsing binary-tree mathematical-expressions
我想将一个给定的数学表达式标记为一个解析树,如下所示:
((3 + 4 - 1) * 5 + 6 * -7) / 2
'/'
/ \
+ 2
/ \
* *
/ \ / \
- 5 6 -7
/ \
+ 1
/ \
3 4
Run Code Online (Sandbox Code Playgroud)
有没有纯Python方法来做到这一点?就像将字符串作为字符串传递给Python然后像上面提到的那样返回树.
谢谢.
是的,Python ast
模块提供了执行此操作的工具.您必须查找您的Python版本的确切界面,因为该ast
模块似乎经常更改.
特别是,该ast.parse()
方法将有助于您的应用程序:
>>> import ast
>>> ast.parse("(1+2)*3", "", "eval")
<_ast.Expression object at 0x88950>
>>> ast.dump(_)
'Expression(body=BinOp(left=BinOp(left=Num(n=1), op=Add(), right=Num(n=2)), op=Mult(), right=Num(n=3)))'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4712 次 |
最近记录: |