2015-09-11 6 views
0

У меня есть текстовый файл с примерно 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? Если есть гораздо более быстрый способ, сообщите.

+0

Существует много способов сделать это. С какими особенностями вы испытываете трудности? –

+0

Благодарим вас за вопросы. – Martin

ответ

0

Я думаю, что вы ищете что-то вроде этого:

#!/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 записей.

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

+0

Благодарим вас за код и полезное объяснение. Я уважаю тебя. – Martin

 Смежные вопросы

  • Нет связанных вопросов^_^