有没有一种方法可以使用ast模块将python程序的关键字替换为其他符号?

时间:2019-07-12 01:54:44

标签: python python-3.x abstract-syntax-tree preprocessor

我希望能够遍历python程序的各行并替换某些语言关键字(例如ifandTrueyield等)和我自己的符号。 我一直在阅读python AST模块文档,不确定是否可以用其他方法替换python语言关键字。 我想避免使用正则表达式,因为它很快变得非常复杂,例如替换if关键字将需要检查该符号是否出现在注释或字符串等中,并且在进行解析时感觉很愚蠢已经在AST中实现。

我想做的一个例子如下:

import os

if "if" in "contains an if":  # checks for 'if'
    print("string contained an 'if'")

将转到:

<alt-import-token> os

<alt-if-token> "if" <alt-in-token> "contains an if":  # checks for 'if'
    print("string contained an 'if'")

请注意如何保留注释和字符串中的关键字。这种复杂性就是为什么我宁愿使用除正则表达式之外的其他东西的原因。

如果有人对AST或其他方法有任何建议,我将不胜感激!

欢呼

0 个答案:

没有答案