搜索文本文件并插入行
问题内容:
我想做的是(以下面的文本为例),在文本文件中搜索字符串“ Text2”,然后在“ Text 2”之后两行插入一行(“ Inserted
Text”)。“文本2”可以在文本文件的任何行上,但是我知道它会在文本文件中出现一次。
所以这是原始文件:
Text1
Text2
Text3
Text4
这就是我想要的:
Text1
Text2
Text3
Inserted Text
Text 4
所以我已经知道如何使用下面的代码在一行上方添加文本。
for line in fileinput.input('file.txt', inplace=1,backup='.bak'):
if line.startswith('Text 4'):
print "Inserted Text"
print line,
else:
print line,
但是我只是不知道如何在文件中搜索的文本后两行添加内容。
问题答案:
如果将文件内容加载到列表中,则操作起来会更容易:
searchline = 'Text4'
lines = f.readlines() # f being the file handle
i = lines.index(searchline) # Make sure searchline is actually in the file
现在i
包含该行的索引Text4
。您可以使用并list.insert(i,x)
在以下位置插入:
lines.insert(i, 'Random text to insert')
或之后:
lines.insert(i+1, 'Different random text')
或之后三行:
lines.insert(i+3, 'Last example text')
只要确保包括对IndexError
s的错误处理,就可以根据需要进行处理。