Извлечь первый элемент из списка после определенного слова

1

У меня есть 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.

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

Теги:
python-3.x
pattern-matching
nltk

1 ответ

1
Лучший ответ

Самый низкий висящий плод, который я вижу, - это то, что вы можете превратить 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))
  • 0
    он не возвращает ничего, когда я назначаю значение next((w for w in nltk.word_tokenize(text) if w.capitalize() in city), None) переменной.
  • 0
    @AkshayNevrekar Это только для последнего города, так как последний раздел обычно пуст. Вы всегда можете просто отказаться от него в конце.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню