在一行中搜索一个字符串,并用另一个字符串替换整行

时间:2016-06-14 22:18:39

标签: python

我在testing中有一个名为/home/hiperbolt的文件,其中有一行说明:

nameserver 127.89.87.3

我想要一段代码来查找以nameserver开头的行并用

替换整行
nameserver 8.8.8.8

我的代码目前发生的事情是它只替换名称服务器部分,因此它变为:

nameserver 8.8.8.8 127.89.87.3

而不是

nameserver 8.8.8.8

2 个答案:

答案 0 :(得分:3)

如果您愿意,可以在没有正则表达式的情况下执行此操作。

with open('/home/hiperbolt', 'r') as f:
    lines = []
    for line in f:
        if line.startswith('nameserver'):
            lines.append('nameserver 8.8.8.8')
        else:
            lines.append(line)

with open('/home/hiperbolt', 'w') as f:
    f.write('\n'.join(lines))

答案 1 :(得分:2)

您可以在文件的文本内容上使用re.sub(),然后将替换后的文本写回文件。

In [30]: filedata
Out[30]: 'nameserver 127.89.87.3\nsearch example.com\n'

In [31]: re.sub(r'nameserver\s+.*', 'nameserver 8.8.8.8', filedata)
Out[31]: 'nameserver 8.8.8.8\nsearch example.com\n'