协慌网

登录 贡献 社区

检查 Python 列表项是否在另一个字符串中包含一个字符串

我有一个清单:

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']

并要搜索包含字符串'abc' 。我怎样才能做到这一点?

if 'abc' in my_list:

会检查'abc' ,但它是'abc-123''abc-456''abc'本身并不存在。那么,如何获取所有包含'abc'

答案

如果您只想检查列表中任何字符串中abc

some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
if any("abc" in s for s in some_list):
    # whatever

如果您真的想获取所有包含abc的项目,请使用

matching = [s for s in some_list if "abc" in s]

只是丢掉它:如果您碰巧需要匹配多个字符串(例如abcdef ,则可以按如下方式结合两种理解:

matchers = ['abc','def']
matching = [s for s in my_list if any(xs in s for xs in matchers)]

输出:

['abc-123', 'def-456', 'abc-456']

使用filter获得具有abc的元素。

>>> lst = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> print filter(lambda x: 'abc' in x, lst)
['abc-123', 'abc-456']

您还可以使用列表推导。

>>> [x for x in lst if 'abc' in x]

顺便说一句,不要将单词list用作变量名,因为它已经用于list类型。