categories = [
'java', 'java developer', 'hadoop', 'Hadoop kafka',
'html developer', 'hibernate', 'text',
'big data developer', 'data stage developer']
str = "looking for hadoop developer with java knowledge"
ans = [i for i in categories
if all([j in str.split() for j in i.split()])]
输出:
['java','java developer','hadoop']
“ java开发人员”不应打印。
我正在寻找完全匹配的单词和短语。 真实类别列表包含7k个元素。
答案 0 :(得分:1)
您完全得到了您想要的内容也就不足为奇了:每个单词出现在目标字符串中任何位置的短语。由于“ java”和“ developer”都出现在目标中,因此结果中包含“ java developer”。
如果您只希望完全匹配词组,则可以简化搜索:
ans = [i for i in categories if i in str]
我相信这可以解决您遇到的问题。
给出:
categories = [
'java', 'java developer', 'hadoop', 'Hadoop kafka',
'html developer', 'hibernate', 'text',
'big data developer', 'data stage developer']
str = "looking for hadoop developer with java knowledge"
输出:
['java', 'hadoop']
如果我们更改str
str = "looking for java developer with hadoop knowledge"
输出更改为
['java', 'java developer', 'hadoop']
换句话说,我的原始帖子可以解决您的原始问题和扩展的问题。