【问题标题】:Python ast (Abstract Syntax Trees): get back source string of subnodePython ast(抽象语法树):取回子节点的源字符串
【发布时间】: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 并手动指定如何从节点构造字符串。但这并没有给我原始来源,我必须小心括号等。)

【问题讨论】:

标签: python parsing


【解决方案1】:

你不会得到 exact original 来源。但是astor 包会给你返回的源代码将重新编译与原始源代码相同。

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

(而且 cmets 中提到的 unparser 包悲观地将括号放在所有内容上。)

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2021-09-06
    • 2017-12-29
    相关资源
    最近更新 更多