[英]Python: search for a STR1 in a line and replace the whole line with STR2
I have a file in which I need to search for STR1
and replace the whole line containing STR2
. 我有一个文件,我需要在其中搜索
STR1
并替换包含STR2
的整个行。 For example the file1
contains the following data 例如,
file1
包含以下数据
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
. 我需要在上面的文件中搜索
Name
,然后将整个行替换为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. 但是如何在python中获得相同的结果。 For example I can replace one string with another string using
fileinput
as follows 例如,我可以使用
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"),
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
) 如何修改以上代码以替换整行,即使使用搜索条件,使用
'*'
替换文件中的所有行( if "Name" in line
)
You can use string.find()
to determine if a string is within another string. 您可以使用
string.find()
确定一个字符串是否在另一个字符串中。 Related Python docs . 相关的Python文档 。
#! /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]
Should do exactly what you want. 应该正是您想要的。
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.