用python替换#define和static const

时间:2012-04-29 19:27:37

标签: python

我是一名python新手,希望得到以下任务的帮助:

给定一个h / cpp文件,我想用静态const替换每个#define行。 当然,变量的类型应该是正确的(假设只有int或string)。

我该怎么做?

2 个答案:

答案 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模块。