【发布时间】:2015-08-22 03:48:16
【问题描述】:
我用
>>> import ast
>>> T = ast.parse('a * (b + c)', mode='eval').body
获取一些(从数学上看;但这不重要)表达式的抽象语法树。
现在我想取回某个特定节点的源字符串。例如
>>> get_source_back(T.right)
'(b + c)'
这个地方有解决办法吗?
(当然我可以使用 .walk 或 NodeVisitor 并手动指定如何从节点构造字符串。但这并没有给我原始来源,我必须小心括号等。)
【问题讨论】:
-
取回源代码不是一项简单的任务,如果使用 exec,pastebin.com/BUeGLdid 这个修改版本的 unparse.py github.com/python/cpython/blob/master/Tools/parser/unparse.py 将取回源代码