我尝试在对python中的AST树进行一些更改后将其解析回源代码,但格式(如空行)丢失了。在调用ast.unparse()时如何保留格式?我知道ast.unparse()本身无法恢复格式选项,但是否有方法使用asttokens之类的模块来实现这一点?
import ast
from asttokens import ASTTokens
# 1. Create a code string
code_str = """
print('1')
print('2')
"""
tree = ast.parse(code_str)
# modifications...
new_code_str = ast.unparse(tree)
# Print the original and modified code strings
print("Original code: ", code_str)
print("Modified code: ", new_code_str)
例如,我希望修改后的代码保留换行符。
1条答案
按热度按时间6tdlim6h1#
问题不在于
ast.unparse
没有产生原始的空白,而是原始的空白根本不在AST * 中。你需要一个 concrete 语法树(CST)来代替。
您可以打印CST本身,以查看实际源代码是如何表示的。