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个元素。
发布于 2018-07-27 03:02:22
毫不奇怪,你得到了你想要的东西:每个单词都出现在目标字符串中的任何地方的短语。因为"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']
换句话说,我最初的帖子解决了你的原始问题和扩展问题。
https://stackoverflow.com/questions/51545714
复制相似问题