我有一个关键字列表,其中包括我在文本中搜索的关键字变体,如:

keywords = ['US Dollar', 'Australian Dollar', 'Dollar', 'Dollars']

我想在以下文本中查找这些关键字:
“美元消息:澳元在美元复苏的情况下暴跌”
并得到最全面的匹配(即最长的匹配),即句子开头的“Dollar”,以及“Australian Dollar”和“US Dollar”(例如,在这些情况下不是“Dollar”)。
我已经试过了:
keywords.sort(key = len, reverse=True)

first = lambda text, kws: next((k for k in kws if k in text), None)

first(myText, keywords)

因为它是最长的匹配,所以返回“澳元”。我怎样才能得到其他的比赛(这里是“美元新闻”中的“美元”和“美元”)?

最佳答案

# -*- coding: utf-8 -*-
"""
Created on Thu Jun 13 14:21:59 2019

@author: jainil
"""
keywords = ['US Dollar', 'Australian Dollar', 'Dollar', 'Dollars']
keywords.sort(key = len, reverse=True)
keywords

text='The Australian Dollar slumped in the face of a recovering US Dollar'
dictt={}
for i in keywords:
    dictt[i]=text.count(i)

max_len=0
max_value=0
for i in dictt.keys():
    if len(i.split())>max_len and dictt[i]>0:
        max_len= len(i.split())
        if(dictt[i]>max_value):
            max_value=dictt[i]



for i,j in dictt.items():
    if(len(i.split())==max_len and j==max_value):
        print(i,j)

关于python - Python:获取文字中最长的匹配关键字提及,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56577617/

10-12 21:55