我是 python 新手,希望帮助完成以下任务:
给定 ah/cpp 文件,我想用静态常量替换每个 #define 行。当然,变量的类型应该是正确的(让我们说只有 int 或 string)。
我怎样才能做到这一点?
我是 python 新手,希望帮助完成以下任务:
给定 ah/cpp 文件,我想用静态常量替换每个 #define 行。当然,变量的类型应该是正确的(让我们说只有 int 或 string)。
我怎样才能做到这一点?
new = ""
file = open("file.cpp")
for line in file:
if "#define" in file:
splitline = line.split(" ")
new += "static const "
if '"' in line:
new += "string "
else:
new += "int "
new += splitline[1]
new += " = "
new += splitline[2]
new += ";\n"
else:
new += line + "\n"
file.close()
newfile = open("new.cpp")
newfile.write(new)
import sys
# Read in the file as an array of lines
lines = file(sys.argv[1], 'r').readlines()
# Loop over the lines and replace any instance of #define with 'static const'
for line_no in xrange(len(lines)):
lines[line_no] = lines[line_no].replace('#define', 'static const')
# Write the file back out
file(sys.argv[1], 'w').writelines(lines)
而且,是的,你可以用列表推导替换我的循环,但对于 Python 新手来说,这更清楚。列表理解版本是:
lines = [line.replace('#define', 'static const') for line in file(sys.argv[1], 'r').readlines()]
file(sys.argv[1], 'w').writelines(lines)
现在这些示例没有考虑类型,但是这种自动替换这样的东西可能是一个可怕的前景。正如其他人指出的那样,您应该使用文本编辑器真正查看您所做的事情实际上是否正确,但通常这是您搜索和替换的方式。
替代实现将使用正则表达式。为此,您将导入 re 模块。