读取文件并检查单词是否在lis中

2024-06-06 19:59:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我妻子给我发短信,内容杂乱无章,购物清单很长。我将把她的名单粘贴到一个文本文件中。我想写一个程序,将删除她的无序名单,并写入该文件的有序名单。e、 所有水果一起,肉一起等等。很明显,这个项目还处于起步阶段。在我的文本文件中,我写了:

banana
apple

在这种情况下,当我遍历文本文件的每一行时,我希望item被附加到水果?但事实并非如此。我错过了什么?你知道吗

fruit = []
vegetables = []
meat = []
dairy = []
fruit_list = ["banana", "apple", "orange"]

def read_list():
    with open("/storage/emulated/0/textfiles/grocery.txt", "r") as r:
        for item in r:
            if item in fruit_list:
                fruit.append(item)
    print(fruit)

Tags: in内容apple粘贴item购物短信list
2条回答

使用.rstrip()从行尾剪切'\n'simbols

def read_list():
    with open("grocery.txt", "r") as r:
        for item in r:
            if item.rstrip() in fruit_list:
                fruit.append(item)
    print(fruit)

read_list()

还可以使用item.rstrip().lower()检查以大写字母开头的项

您需要从文件中去掉行结束符,因为它们的结尾带有\n\r\n(Windows回车)。这意味着您将bananabanana\n进行比较,它们不相等,导致没有附加任何内容。你知道吗

您可以通过预先使用^{}来修复此问题,如下所示:

item = item.strip()
if item in fruit_list:
    # rest of code

或者你也可以用^{}从右边剥离:

item = item.rstrip()
if item in fruit_list:
    # rest of code

您还可以在使用^{}迭代时剥离所有内容:

for item in map(str.strip, r):
    # rest of code

但前两种解决方案是好的。你知道吗

相关问题 更多 >