Python:在一行中搜索STR1并用STR2替换整行

时间:2016-07-11 17:51:47

标签: python string file replace io

我有一个文件,我需要在其中搜索STR1并替换包含STR2的整行。例如,file1包含以下数据

Name: John
Height: 6.0
Weight: 190
Eyes: Blue

我需要在上面的文件中搜索Name,然后用Name: Robert替换整行。我可以在sed中轻松完成这项工作

sed -i 's/.*Name.*/Name:Robert/' file1

但是如何在python中获得相同的东西。例如,我可以使用fileinput将一个字符串替换为另一个字符串,如下所示

#! /usr/bin/python
import fileinput
for line in fileinput.input("file1", inplace=True):
    # inside this loop the STDOUT will be redirected to the file
    # the comma after each print statement is needed to avoid double line breaks
    print line.replace("Name: John", "Name: Robert"),

如何修改上述代码以替换整行,使用'*'替换文件中的所有行,即使搜索条件为if "Name" in line

2 个答案:

答案 0 :(得分:2)

您可以使用string.find()来确定字符串是否在另一个字符串中。 Related Python docs

#! /usr/bin/python
import fileinput
for line in fileinput.input("file1", inplace=True):
    if line.find("Name:") >= 0:
        print "Name: Robert"
    else:
        print line[:-1]

答案 1 :(得分:1)

应该完全按照自己的意愿行事。

def replace_basic(key_to_replace, new_value, file):
    f = open(file, 'rb').readlines()
    with open(file, 'wb') as out:
        for line in f:
            if key_to_replace in line:
                out.write(new_value+'/n') #asuming that your format never changes then uncomment the next line and comment out this one.
                #out.write('{}: {}'.format(key_to_replace, new_value))
                continue
            out.write(line)