我有一个关键字列表,其中包括我在文本中搜索的关键字变体,如:
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/