Извлечь первый элемент из списка после определенного слова - PullRequest
0 голосов
/ 27 августа 2018

У меня есть string и list следующим образом:

text = 'Sherlock Holmes. PARIS. Address: 221B Baker Street, london. Solving case in Madrid.'

city = ['Paris', 'London', 'Madrid']

Я хочу извлечь 1-й элемент из списка, который следует за словом Адрес .

Вот мой подход к проблеме с использованием nltk

import nltk

loc = None
flag = False
for word in nltk.word_tokenize(text):
    if word == 'Address':
        flag = True

    if flag:
        if word.capitalize() in city:
            loc = word
            break

print(loc)

Я получаю ожидаемый результат сверху, который равен london.

Но в реальном сценарии мой текст слишкомбольшой и список городов тоже, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 27 августа 2018

Самый низкий висящий фрукт, который я вижу, это то, что вы можете превратить city в set для проверки членства в постоянном времени.Кроме того, рассмотрите возможность использования next с аргументом по умолчанию для возврата следующего города.

city = {'Paris', 'London', 'Madrid'}
while text:
    text = text.partition('Address')[-1].strip()
    print(
        next((w for w in nltk.word_tokenize(text) if w.capitalize() in city), None))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...