-2

我是 python 新手,希望帮助完成以下任务:

给定 ah/cpp 文件,我想用静态常量替换每个 #define 行。当然,变量的类型应该是正确的(让我们说只有 int 或 string)。

我怎样才能做到这一点?

4

2 回答 2

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)
于 2012-04-29T19:37:54.633 回答
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 模块。

于 2012-04-29T19:39:54.050 回答