чтение из файла и проверка наличия слова в списке - PullRequest
0 голосов
/ 21 ноября 2018

моя жена пишет мне неорганизованные и длинные списки продуктов.Я вставлю ее список в текстовый файл.Я хочу написать программу, которая сотрет ее неупорядоченный список и запишет в этот файл упорядоченный список.экс все фрукты вместе, мясо вместе и т. д.ясно, что эта программа находится в зачаточном состоянии.в моем текстовом файле я написал:

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)

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Используйте .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() для проверки элементов, начинающихся с заглавной буквы

0 голосов
/ 21 ноября 2018

Вам нужно убрать окончания строк из файла, так как они имеют \n или \r\n (возврат каретки Windows) на концах.Это означает, что вы сравниваете banana с banana\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

Но первые два решения хороши.

...