gpt4 book ai didi

python - 删除外部文本文件中的某些行

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:46 25 4
gpt4 key购买 nike

我正在开发一个程序,它应该能够处理基本的图书馆任务。我有一个类方法的问题,该方法应该为用户提供从图书馆中删除某本书的可能性。书籍列表包含在外部文本文件中,格式如下(作者、书名):

  Vibeke Olsson, Molnfri bombnatt 
Axel Munthe, Boken om San Michele

我使用的方法如下所示:

<小时/>
def removeBook(self):
removal_of_book = input("What's the book's titel, author you'd like to remove?: ")
with open("books1.txt" , "r+") as li:
new_li = li.readlines()
li.seek(0)
for line in new_li:
if removal_of_book not in line:
li.write(line)
li.truncate()
print(removal_of_book + " is removed from the system!")

此方法的问题在于,包含 removal_of_book 的每一行都会被删除(或不会在文件上重写)。我知道该方法远非最佳,可能应该被取消,但我完全迷失在寻找替代方案中。

有没有人有更好的办法来解决这个问题?

最佳答案

您可以创建行以使用列表理解即时写入新文件,然后将它们写入新文件(使用相同的文件名覆盖原始文件):

def removeBook(self):

to_remove = input("What's the book's title, author you'd like to remove?: ")

with open("books1.txt" , "r+") as li:

new_li = [line for line in li.readlines() if to_remove not in line]

new_file = open('books1.txt', 'w'); new_file.write(new_li); new_file.close()

print(to_remove + " is removed from the system!")

请注意,字符串成员资格检查区分大小写,因此您希望用户完全匹配原始文件中的大小写。您可能会考虑在使用 lower() 执行检查之前将字符串转换为小写。

关于python - 删除外部文本文件中的某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53053847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com