gpt4 book ai didi

python - 在 Python 源文件中重命名变量和方法名

转载 作者:行者123 更新时间:2023-12-03 20:20:50 26 4
gpt4 key购买 nike

我正在尝试编写一个 Python 程序,该程序基本上将原始 Python 源文件作为输入,并将所有变量名更改为 V,将所有方法或函数名更改为 F,并保持其他所有内容不变。所以我正在努力实现这一目标:

输入:

def gcd(x, y):
"""Sample docstring."""
if x == y:
return x
if x > y:
if y == 0: return x
return gcd(x-y, y)
if y > x:
if x == 0: return y
# Sample comment.
return gcd(x, y-x)

输出:
def F(V, V):
"""Sample docstring."""
if V == V:
return V
if V > V:
if V == 0: return V
return F(V-V, V)
if V > V:
if V == 0: return V
# Sample comment.
return F(V, V)

Python 源文件中的所有其他内容都将保持原样,包括注释、文档字符串等。我不完全确定如何执行此操作,因为我也希望以后能够使用 Java 进行同样的处理和 C++ 文件。 (即,将所有变量名称更改为 V,将所有函数/方法名称更改为 F)。因此,使用 Python tokenize 模块或 Python ast 模块可能不是最佳选择,因为这将限制我只能处理 Python 源文件,而不能处理 Java 或 C++ 文件。

我已经尝试使用 PLY,但问题是,我必须指定所有正则表达式规则和整个 Python 语法。必须有一种更简单的方法来实现我想要做的事情?或者,如果我打算在以后处理 Java 和 C++ 源代码文件,这是唯一可能的方法吗?

如果我能得到一些关于最好的选择是什么的想法或反馈,那就太好了。

最佳答案

如果你有那种代码,你可以使用两个正则表达式。一个获取函数名,另一个获取变量。

如果您使用此正则表达式:

\w+(?=\()|\b[xy]\b

Working demo

你可以看到它符合你需要的一切。

因此,您可以分别使用这两个正则表达式来替换您想要的内容。第一步是使用以下方法替换函数名称:
\w+(?=\()

第二个正则表达式是用 V 替换 X 和 Y:
\b[xy]\b

enter image description here

第一个正则表达式:

enter image description here

第二个正则表达式:

enter image description here

关于python - 在 Python 源文件中重命名变量和方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555638/

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