从文件中读取并检查列表中的单词

reading from a file and checking if word in list

我的妻子给我发短信,杂乱无章且冗长的购物清单。我会将她的列表粘贴到一个文本文件中。我想编写一个程序来擦除她的无序列表并将有序列表写入该文件。 e.x。所有的水果在一起,肉在一起等等。显然这个项目还处于起步阶段。在我的文本文件中,我写了:

banana
apple

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

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)

您需要从文件中删除行尾,因为它们在末尾带有 \n\r\n(Windows 回车 return)。这意味着您正在比较 bananabanana\n,它们 相等,因此不会附加任何内容。

您可以预先使用 str.strip() 来解决此问题,如下所示:

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

或者您可以使用 str.rstrip():

从右侧剥离
item = item.rstrip()
if item in fruit_list:
    # rest of code

您还可以在使用 map():

迭代时删除所有内容
for item in map(str.strip, r):
    # rest of code

但是前两个解决方案都可以。

使用.rstrip()从行尾删除'\n'符号

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() 来检查以大写字母开头的项目