как искать элемент в списке, используя python? - PullRequest
0 голосов
/ 31 марта 2020

Я создал функцию, которая удаляла бы элементы из текстового файла. Теперь я хочу убедиться, что элемент, который пользователь хочет удалить, находится в самом файле. Однако теперь, независимо от того, присутствует ли элемент в списке или нет, он всегда печатает «Студент не был найден» и спрашивает, почему… Может ли кто-нибудь объяснить мне?

Это мой код:

def delete_a_record(filename):

    x=input("Remove Student's Name:")
    y=input("Remove Last Name:")

    with open(filename, "r") as f:
        lines = f.readlines()
        print(lines)
        if x not in lines and y not in lines:
            print("Student was not found")
        else:
            print("Student was deleted")
        with open(filename, "w") as f:
        for i in lines:
            t=i.split()
            if t[0]!=x and t[1]!=y:
                f.write(i)


    f.close()
    delete_a_record("mytextfile.txt")

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

.readlines() читает строки, используя .readline(), который включает символ \n в конце каждой строки .

input() не добавляет \n в конец входной строки.

s in string_list ищет точные совпадения, поэтому входная строка не будет совпадать ни с одной строкой в ​​списке lines.

0 голосов
/ 31 марта 2020

Вот пример списка строк и строки, которую я хочу найти в ней:

L = ['ab', 'cd', 'ef']
s = 'a'

Если я хочу выяснить, есть ли s в строке в списке, я не могу do s in L, потому что 'a' нет в списке, 'ab' есть. Что я могу сделать, так это l oop над списком и проверить, есть ли s в каком-либо элементе:

any(s in x for x in L)

Предполагая, что строки в вашем файле имеют форму FirstName LastName OtherInfo

0 голосов
/ 31 марта 2020

Какие строки в вашем текстовом файле? Я предполагаю, что они отформатированы так: «имя, фамилия». в этом случае ваш список будет выглядеть следующим образом: ["Monica Geller", "Chandler Bing"] Так что, если вы будете искать «Моника» или «Геллер», их нет в файле. вам нужно искать x + " " + y или предпочтительно: f"{x} {y}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...