I have a file in which I need to search for STR1 and replace the whole line containing STR2. For example the file1 contains the following data
Name: John
Height: 6.0
Weight: 190
Eyes: Blue
I need to search for Name in the above file and then replace the whole line with Name: Robert. I can accomplish this easily in sed as
sed -i 's/.*Name.*/Name:Robert/' file1
But how to get the same in python. For example I can replace one string with another string using fileinput as follows
#! /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"),
How to modify the above code to replace the whole line, using '*' replaces all the lines in the file even with a search condition (if "Name" in line)
解决方案
You can use string.find() to determine if a string is within another string. 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]