python string在文本文件中查找和替换

时间:2015-06-18 13:44:32

标签: python python-2.7

我正在读取文件并替换文本字符串。我正在为几个不同的字符串做这个,我知道这不是最有效的代码我只是想让它工作。这就是我所拥有的:

    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次,并且只在第一次尝试时替换字符串,而不是替换它创建的新行(如果它与字符串匹配则无关紧要)

3 个答案:

答案 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写入文件。