Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python删除文本文件中的多行?_Python - Fatal编程技术网

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

如何使用python删除文本文件中的多行?,python,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:

我正在通过编写电话簿程序来练习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)
这是行不通的


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

回答您的直接问题:您可以使用
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,
为了避免将整个文件读入内存,这会在后台为您处理一些事情—将原始文件移动到tempfile,写入新文件,然后删除tempfile


可能更好的答案是:看起来您已经推出了一个自制的序列化解决方案。考虑使用一个内置的库,比如“代码> CSV ,<代码> JSON ,<代码> Save< <代码>,或者甚至<代码> SqLITE3以更容易的格式保存数据。

是否要删除同名的多个条目,对吗?我想删除我所搜索的行和之后的下一行4行。每个条目有5行?是的,每个条目有5行。这对我很有用。谢谢你的帮助!它给我的唯一问题是匹配一行中的任何东西。因此,如果我有test和test2,它们都将被删除。@ChrisJones,那么您需要使用
re.search
对匹配进行更精细的处理。我不能帮你写,因为我不知道你的文件格式或你正在搜索的东西。我认为这是可行的,但它会在找到匹配项后删除所有内容,而不仅仅是5行。我没想到要用正则表达式。我会试试看。再次感谢。如果您在同一目录中有一个名为phonebook.txt.bak的文件,这不会删除它吗?