在文本文件中查找和替换python字符串

在文本文件中查找和替换python字符串,python,python-2.7,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)

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

    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次,并且只在第一次尝试时替换字符串,而不是在它创建的新行上,不管它是否与字符串匹配

您只需要将其视为一个字符串并对其应用所有替换

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

如果找不到这些目标中的任何一个,它将不会对行字符串进行任何更改,因此它将只替换找到的内容。

您只需将其视为一个字符串,并对其应用所有替换内容

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
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)
如果它找不到这些目标中的任何一个,它就不会对行字符串进行任何更改,因此它只会替换它找到的内容

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)
通过复制和粘贴您编写的内容并仅使用delete键和重新缩进来完成。除最后一个结束符外,未添加任何字符

或者,这种格式可能更清晰。它使用反斜杠字符以更整洁的方式拆分一行,以提高可读性:

    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)
通过复制和粘贴您编写的内容并仅使用delete键和重新缩进来完成。除最后一个结束符外,未添加任何字符

或者,这种格式可能更清晰。它使用反斜杠字符以更整洁的方式拆分一行,以提高可读性:

    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)

您可以逐行读取文件。 在每一行中寻找你想替换的单词

例如:

line1 = 'Hello World There'
def Dummy():
    lineA = line1.replace('H', 'A')
    lineB = lineA.replace('e', 'o')
    print(lineB)

Dummy()

然后将lineB写入文件

您可以逐行读取文件。 在每一行中寻找你想替换的单词

例如:

line1 = 'Hello World There'
def Dummy():
    lineA = line1.replace('H', 'A')
    lineB = lineA.replace('e', 'o')
    print(lineB)

Dummy()

然后将lineB写入文件

再一次投了反对票,没有任何评论我的示例实现了主题启动者的要求,只是方式不同。。。。这有什么不对?去激励您的解决方案使用冗余函数。Dummy只能在第1行上操作,所以为什么要把它放在函数中呢?在这种特殊情况下,为每个替换都使用不同的变量可能也不值得。如果您读取了第一行,那么应该由一个逐行读取文件的函数使用它。。当它读取每一行时,然后进行替换。因此,第1行从正在读取的文件中回复当前行。并且再次进行不带注释的向下投票。-\u-我的示例实现了主题启动者的要求,只是方式不同。。。。这有什么不对?去激励您的解决方案使用冗余函数。Dummy只能在第1行上操作,所以为什么要把它放在函数中呢?在这种特殊情况下,为每个替换都使用不同的变量可能也不值得。如果您读取了第一行,那么应该由一个逐行读取文件的函数使用它。。当它读取每一行时,然后进行替换。因此,line1从正在读取的文件中复制当前行。