Я использую следующий код, чтобы открыть текстовый файл, удалить HTML, и искать слова до и после определенного ключевого слова:Python: Поиск слов до и после пары ключевых слов
import nltk
import re
text = nltk.clean_html(open('file.txt').read())
text = text.lower()
pattern = re.compile(r'''(?x) ([^\(\)0-9]\.)+ | \w+(-\w+)* | \.\.\. ''')
text = nltk.regexp_tokenize(text, pattern)
#remove the digits from text
text = [i for i in text if not i.isdigit()]
# Text is now a list of words from file.txt
# I now loop over the Text to find all words before and after a specific keyword
keyword = ['foreign']
for i, w in enumerate(text): #it gives to the list items numbers
if w in keyword:
before_word = text[i-5:i-1] if i > 0 else ''
before_word = ' '.join(word for word in before_word)
after_word = text[i+1:i+5] if i+1 < len(text) else ''
after_word = ' '.join(word for word in after_word)
print "%s <%s> %s" % (before_word, w, after_word)
Это коды хорошо работает, если keyword
- одно слово. Но что, если я хочу найти 5 слов до и после 'foreign currency'
? Проблема в том, что в text
все слова, разделенные пробелом, представляют собой другой элемент в списке text
. Я не могу сделать keyword = ['foreign currency']
. Как я могу решить эту проблему?
Sample .txt файл here.
Можете ли вы показать, как выглядит файл ur inpu и что такое ожидаемый выход ur – Hackaholic
@Hackaholic Я добавил образец txt-файла. Образец слов, которые нужно найти, будет «может отрицательно повлиять на колебания валютного курса» – Plug4