我是一名python新手,希望得到以下任务的帮助:
给定一个h / cpp文件,我想用静态const替换每个#define行。 当然,变量的类型应该是正确的(假设只有int或string)。
我该怎么做?
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
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模块。