从列表中提取特定单词后出现的第一个元素

2024-04-26 10:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个string和一个list如下:

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

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

我想从单词地址之后出现的列表中提取第一个元素

下面是我使用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

但在真实场景中,我的文本太大,城市列表太多,有没有更好的方法


Tags: 方法textincity列表stringifaddress
1条回答
网友
1楼 · 发布于 2024-04-26 10:20:45

我看到的最容易实现的结果是,可以将city转换为set进行固定时间的成员身份检查。除此之外,考虑使用缺省参数的{{CD3}}返回下一个城市。

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))

相关问题 更多 >