我正在读取文件并替换文本字符串。我正在为几个不同的字符串做这个,我知道这不是最有效的代码我只是想让它工作。这就是我所拥有的:
for line in fileinput.input(new_config, inplace=1):
print line.replace("http://domain.com", self.site_address)
print line.replace("dbname", self.db_name)
print line.replace("root", self.db_user)
print line.replace("password", self.db_pass)
print line.replace("smvc_", self.prefix
这样可以工作,但它也会将文件中的每一行写入5次,并且只在第一次尝试时替换字符串,而不是替换它创建的新行(如果它与字符串匹配则无关紧要)
答案 0 :(得分:4)
您只需将其视为一个字符串并将所有替换应用于该字符串。
for line in fileinput.input(new_config, inplace=1):
line = line.replace("http://domain.com", self.site_address)
line = line.replace("dbname", self.db_name)
line = line.replace("root", self.db_user)
line = line.replace("password", self.db_pass)
line = line.replace("smvc_", self.prefix)
print line
如果找不到任何这些目标,它将不会对line
字符串进行任何更改,因此它只会替换它找到的内容。
答案 1 :(得分:2)
for line in fileinput.input(new_config, inplace=1):
print line.replace(
"http://domain.com", self.site_address).replace(
"dbname", self.db_name).replace(
"root", self.db_user).replace(
"password", self.db_pass).replace("smvc_", self.prefix)
通过复制和粘贴您编写的内容并仅使用删除键并重新缩进来完成。除了最后一个结束时,没有添加任何字符。
或者,这种格式可能更清楚。它使用反斜杠字符以更整洁的方式拆分一行,以提高可读性:
print line.replace("http://domain.com", self.site_address) \
.replace("dbname", self.db_name) \
.replace("root", self.db_user) \
.replace("password", self.db_pass) \
.replace("smvc_", self.prefix)
答案 2 :(得分:-1)
您可以逐行读取文件。
并在每一行寻找您想要替换的词。
例如:
line1 = 'Hello World There'
def Dummy():
lineA = line1.replace('H', 'A')
lineB = lineA.replace('e', 'o')
print(lineB)
Dummy()
然后将lineB
写入文件。