目前我正在用python编写一个简单的程序,它允许用户从游戏中添加和删除坐标(以及查看它们)。还允许您输入标题。
无论如何,我需要帮助的是删除功能。我想在文本文件中搜索特定字符串,例如说“油池”是我要搜索的字符串。我该怎么做?
搜索字符串后,我想删除接下来的 6 行(包括我搜索的字符串。)
这是文本文件中条目的样子的图片。所以如果我想删除这个条目,我想搜索“巨大的油池”然后删除它,以及接下来的 6 行。
谢谢
保罗
对于此特定任务,您最好使用 sed 或 awk。但是,如果你坚持使用 python:
f = open('coordfile', 'r')
newcontents=""
linecounter=-1
for line in f:
if linecounter>=0:
linecounter+=1
if "Oil Pool" in line:
linecounter+=1
if linecounter>6:
linecounter=-1
if linecounter==-1:
newcontents+=line
f.close()
f=open('coordfile', 'w')
f.write(newcontents)
f.close()
也许是这样的?这不会尝试将整个文件吸入内存,并且在文件被重写时不会有竞争窗口。但是,它确实需要更多磁盘空间:
#!/usr/bin/python3
import os
with open('coordfile', 'r') as infile, open('coordfile.temp', 'w') as outfile:
linecounter = -1
for line in infile:
if "Oil pool" in line:
linecounter = 6
if linecounter > -1:
linecounter -= 1
continue
linecounter -= 1
outfile.write(line)
os.rename('coordfile.temp', 'coordfile')