Перебрать текстовый файл, содержащий три разных поля в каждой строке и вернуть третье поле в запрос, соответствующий первым двум?

У меня есть текстовый файл с около 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 записей.

Надеюсь это поможет:)

Другие вопросы по тегам