Сравнения почтовых адресов

Имеется база данных эл. почт (txt формат). Пользователь отправляет свой адрес в функцию (например [email protected]). В базе содерится похожий (но не идентичный) ящик, с именем [email protected]. Пользовательского ящика в базе нет! Программа должна вернуть false, т.к. ящики разные. Я написал простую функцию для проверки вхождения:

def check(email):
    with open("emails.txt", "r") as f:
        emails = f.read()
        if email in emails:
            return True
        else:
            return False

Проблема в том, что хотя адрес на совпадает, программа будет возвращать значение True, если адрес имя ящика совпадет с концовкой имени другого. Как можно этого избежать?


Ответы (2 шт):

Автор решения: toryo

Решил через преобразование в список и последующее сравнение через email == line[0]

def check(email):
    with open("emails.txt", "r") as f:
        for line in f.readlines():
            line = list(line.split(":"))
            print(line)
            if email == line[0]:
                print(True)
                return True
→ Ссылка
Автор решения: Alex Titov

Предполагаю, что файл emails имеет вид:

[email protected]:Вася
[email protected]:Петя

тогда проверка будет примерно так, кстати, она соответсвует Вашему коду (без принтов, конечно)

def chek(email):
    with open("emails.txt") as f:
        return email in (s.split(':')[0] for s in f)
→ Ссылка