注意,这不是这个问题的重复:
How to check if a string contains an element from a list in Python
但是,它基于它的逻辑。
我有以下字符串:
my_string = 'this is my complex description'
我有一个关键字列表:
keywords = ['my', 'desc', 'complex']
我知道我可以使用以下内容来检查关键字是否存在:
if any(ext in my_string for ext in keywords):
print(my_string)
但我想显示哪些关键字与描述实际匹配。我知道我可以循环执行关键字,然后单独检查每个关键字,但是是否可以在一个语句中进行检查?
哪个版本的python是解决方案并不重要。
答案 0 :(得分:4)
如果您想匹配完整的单词,可以使用set intersection:
>>> my_string = 'this is my complex description'
>>> keywords = ['my', 'desc', 'complex']
>>> set(my_string.split()) & set(keywords)
{'complex', 'my'}
答案 1 :(得分:1)
>>> my_string = 'this is my complex description'
>>> keywords = ['my', 'desc', 'complex']
>>> print(*[c for c in my_string.split() if c in keywords])
my complex
请注意,根据我的知识,这仅适用于python3.x(我不太确定它在python 2中的表现)
如果您对它正在做的事情感到困惑,*
只是解压缩列表理解列表,该列表理解将my_string
中任何ISNT项目作为print
中的单独参数进行过滤。 1}}。在python3中,print
中的单独args在它们之间打印有空格。
答案 2 :(得分:0)
-Dsun.java2d.d3d=true -Dprism.forceGPU=true
这将为您提供my_string中找到的关键字列表。如果您将关键字设为found_words = [ word for word in keywords if word in my_string ]
,性能会更好:
set
但后者依赖的事实是my_string不会将单词与除空格之外的任何内容分开。