gpt4 book ai didi

python - 将 AST 节点转换为 python 代码

转载 作者:行者123 更新时间:2023-11-30 22:48:52 28 4
gpt4 key购买 nike

假设我有以下字符串:

code = """
if 1 == 1 and 2 == 2 and 3 == 3:
test = 1
"""

以下代码将该字符串转换为 AST。

ast.parse(code)

然后我有一棵树:

Module(body=[<_ast.If object at 0x100747358>])
If(test=BoolOp(op=And(), values=[<_ast.Compare object at 0x100747438>, <_ast.Compare object at 0x100747a90>, <_ast.Compare object at 0x100747d68>]), body=[<_ast.Assign object at 0x100747e48>], orelse=[])

我想知道是否有办法将对象at.If转换为字符串if 1 == 1 and 2 == 2 and 3 == 3:

我知道可以通过遍历子节点来完成,但是这样就变得太复杂了。

最佳答案

Python 3.9 引入 ast.unparse它正是这样做的,即它反转了ast.parse。使用您的示例:

import ast

code = """
if 1 == 1 and 2 == 2 and 3 == 3:
test = 1
"""

tree = ast.parse(code)
print(ast.unparse(tree))

这将打印出:

if 1 == 1 and 2 == 2 and (3 == 3):
test = 1

请注意,原始输入可能略有不同。

关于python - 将 AST 节点转换为 python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com