Python ast(抽象语法树):获取子节点的源字符串

时间:2015-08-21 17:42:47

标签: python parsing

我用

>>> import ast
>>> T = ast.parse('a * (b + c)', mode='eval').body

获取一些抽象语法树(数学上看起来;但这不应该)表达式。

现在我想找回某个特定节点的源字符串。例如

>>> get_source_back(T.right)
'(b + c)'

这个地方有解决方案吗?

(当然我可以使用.walk或NodeVisitor并手动指定如何从节点中构造一个字符串。但是这不会给我原始的来源,我必须小心括号等等。)

1 个答案:

答案 0 :(得分:2)

您将无法获得完全 原始来源。但是astor包会为您提供与重新编译相同的源代码。

编辑添加 github上版本提供的重构源明显优于最新版本提供的源(例如,更少的括号和更好的文档字符串处理)。我认为新版本即将发布。

(评论中提到的更粗略的软件包悲观地将括号放在所有内容上。)