Перебрать текстовый файл, содержащий три разных поля в каждой строке и вернуть третье поле в запрос, соответствующий первым двум?
У меня есть текстовый файл с около 100 строк данных, расположенных в следующем порядке:
Aesop – Aesop’s Fables – example.com
Sherwood – Winesburg – example.com
Lysistrata – Holyland – example.com
Isaac – Nightfall – example.com
Asimov – The Foundation Trilogy – link to mp3
Я хочу написать бота Twitter, который будет перебирать текстовый файл построчно, искать твиты, содержащие первые два поля, а именно. имя и книга автора, и если любое из полей в каждой строке совпадает с сообщением, ответьте на сообщение с третьим полем, то есть ссылкой на mp3. Как мне сделать это эффективно с помощью Python 3? Если есть намного более быстрый способ, пожалуйста, сообщите.
1 ответ
Я думаю, что вы ищете что-то вроде этого:
#!/usr/bin/env python3
tweet = "Some Tweet including Asimov #Example"
with open("so_textfile_reading.txt", "r") as infile:
# be aware you are not using a standard minus (HYPHEN-MINUS)
# in your file to separate the entries, but dashes (EN-DASH)
entries = [line.strip().split(" – ") for line in infile]
for author, book, link in entries:
if (author in tweet) or (book in tweet):
# Create reply here
print(link)
Вы можете перебрать все строки файла. Уберите их из любых пробелов, разрывов строк и т. Д., А затем разделите их на -
чтобы получить кортежи автора, книги и ссылки. Вы должны быть осторожны с символами в разделении (см. Комментарий в коде).
Тогда вам просто нужно проверить, есть ли в тексте вашего твита автор или книга. Обратите внимание, что в одном твите может происходить несколько попаданий, поэтому вам придется собирать совпадения (например, в списке) и создавать ответ после посещения всех 100 записей.
Надеюсь это поможет:)