如何使用python删除文本文件中的多行?

时间:2014-09-12 19:21:51

标签: python

我正在通过编写电话簿程序来练习我的python技能。我能够搜索和添加条目,但我在删除条目时遇到了很多麻烦。

我正在尝试找到与我的搜索匹配的行,并删除它以及接下来的4行。我有一个删除功能:

def delete():
    del_name = raw_input("What is the first name of the person you would like to delete? ")
    with open("phonebook.txt", "r+") as f:
            deletelines = f.readlines()
            for i, line in enumerate(deletelines):
                if del_name in line:
                    for l in deletelines[i+1:i+4]:
                        f.write(l)

这不起作用。

如何从这样的文本文件中删除多个条目?

1 个答案:

答案 0 :(得分:1)

回答您的直接问题:您可以使用fileinput轻松地就地更改文本文件:

import fileinput
file = fileinput.input('phonebook.txt', inplace=True)

for line in file:
     if word_to_find in line:
         for _ in range(4): # skip this line and next 4 lines
             next(file, None)
     else:
         print line,

为了避免将整个文件读入内存,这会在后台处理一些事情 - 它将原始文件移动到临时文件,写入新文件,然后删除临时文件。

可能更好的答案:看起来你已经推出了自制的序列化解决方案。请考虑使用内置库,例如csvjsonshelve,甚至sqlite3,以便以更易于使用的格式保存数据。