Как создать новый список из фаила .txt?

Задание состоит в следующем:

Дан файл names.txt

  1. Нужно написать функцию, которая считывает данные из этого файла, возвращая СПИСОК тех строк в которых есть полная дата, писатель и указание на его день рождения или смерти.

  2. Нужно написать функцию, которая принимает список строк полученной в пункте 1, и возвращает список словарей в формате {"name": name, "date": date}, где name это имя автора, а date - дата из строки в формате "dd/mm/yyyy" (d-день, m-месяц, y-год) Например: [{"name": Dr. Seuss, "date": 02/03/1904}, {"name": Jules Verne, "date": 24/03/1905}...]

Например, кусок из фаила:

2nd March 1904 - Dr. Seuss's birthday, author of Cat in the Hat
3rd March 2016 - World Book Day 2016
21st March - World Poetry Day
24th March 1905 - Jules Verne's death, author of Around the World in Eighty Days
31st March 1855 - Charlotte Bronte's death - Author of Jane Eyre

Я написал следующее:

def read_txt(filename = "authors.txt"):
    with open(filename, 'r') as file:
        data = []
        for line in file.readlines():
            if line.find("birthday") or line.find("death"):
                data.append(line)
    return data
print(read_txt())

Вот только выводит все равно все строки.

Как это исправить? Что не так делаю?


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

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

Функция str.find("text") - возвращает -1 в том случае если ничего не найдено.

Проверка if -1: - возвращает True.

Таким образом проверка line.find("birthday") or line.find("death") - всегда возвращает True.

Воспроизведение:

In [178]: if -1:
     ...:     print("What ??")
     ...: 
What ??

In [179]: if "aaa".find("bbb"):
     ...:     print("What ??")
     ...: 
What ??

→ Ссылка