我用
>>> import ast
>>> T = ast.parse('a * (b + c)', mode='eval').body
获取一些抽象语法树(数学上看起来;但这不应该)表达式。
现在我想找回某个特定节点的源字符串。例如
>>> get_source_back(T.right)
'(b + c)'
这个地方有解决方案吗?
(当然我可以使用.walk或NodeVisitor并手动指定如何从节点中构造一个字符串。但是这不会给我原始的来源,我必须小心括号等等。)
答案 0 :(得分:2)
您将无法获得完全 原始来源。但是astor包会为您提供与重新编译相同的源代码。
编辑添加 github上版本提供的重构源明显优于最新版本提供的源(例如,更少的括号和更好的文档字符串处理)。我认为新版本即将发布。
(评论中提到的更粗略的软件包悲观地将括号放在所有内容上。)