Как создать новый список из фаила .txt?
Задание состоит в следующем:
Дан файл names.txt
Нужно написать функцию, которая считывает данные из этого файла, возвращая СПИСОК тех строк в которых есть полная дата, писатель и указание на его день рождения или смерти.
Нужно написать функцию, которая принимает список строк полученной в пункте 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 шт):
Функция 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 ??