从Python中的字符串列表中获取字符串中的关键字

时间:2015-12-17 21:54:20

标签: python

注意,这不是这个问题的重复:

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是解决方案并不重要。

3 个答案:

答案 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不会将单词与除空格之外的任何内容分开。