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

Python ast(抽象语法树):获取子节点的源字符串,python,parsing,Python,Parsing,我用 获取某些(数学上看;但这不重要)表达式的抽象语法树 现在我想返回某个特定节点的源字符串。比如说 >>> import ast >>> T = ast.parse('a * (b + c)', mode='eval').body 有什么解决办法吗 (当然,我可以使用.walk或NodeVisitor并手动指定如何从节点构造字符串。但这并不能提供原始源代码,我必须小心使用括号等。)您将无法获得确切的原始源代码。但是包将返回与原始源相同的重新编译源 编辑以添

我用

获取某些(数学上看;但这不重要)表达式的抽象语法树

现在我想返回某个特定节点的源字符串。比如说

>>> import ast
>>> T = ast.parse('a * (b + c)', mode='eval').body
有什么解决办法吗

(当然,我可以使用.walk或NodeVisitor并手动指定如何从节点构造字符串。但这并不能提供原始源代码,我必须小心使用括号等。)

您将无法获得确切的原始源代码。但是包将返回与原始源相同的重新编译源

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


(注释中提到的unparser软件包悲观地在所有内容上加了括号。)

取回源代码不是一项简单的任务,如果使用exec,这个修改后的unparse.py版本将取回源代码,这可能是
>>> get_source_back(T.right)
'(b + c)'