0

目前我正在用python编写一个简单的程序,它允许用户从游戏中添加和删除坐标(以及查看它们)。还允许您输入标题。

无论如何,我需要帮助的是删除功能。我想在文本文件中搜索特定字符串,例如说“油池”是我要搜​​索的字符串。我该怎么做?

搜索字符串后,我想删除接下来的 6 行(包括我搜索的字符串。)

文本文件

这是文本文件中条目的样子的图片。所以如果我想删除这个条目,我想搜索“巨大的油池”然后删除它,以及接下来的 6 行。

谢谢

保罗

4

2 回答 2

2

对于此特定任务,您最好使用 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()
于 2013-11-09T02:05:53.673 回答
1

也许是这样的?这不会尝试将整个文件吸入内存,并且在文件被重写时不会有竞争窗口。但是,它确实需要更多磁盘空间:

#!/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')
于 2013-11-09T05:05:39.407 回答