如何检查字符串是否是字符串列表中项目的子字符串

如何在以下列表中搜索包含字符串'abc'的项目?

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

以下检查'abc'是否在列表中,但未检测到'abc-123''abc-456'

if 'abc' in xs:
1714782 次浏览
x = 'aaa'L = ['aaa-12', 'bbbaaa', 'cccaa']res = [y for y in L if x in y]

要检查列表中的任何字符串中是否存在'abc'

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

要获取包含'abc'的所有项目:

matching = [s for s in xs if "abc" in s]
any('abc' in item for item in mylist)

使用filter获取所有具有'abc'的元素:

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

也可以使用列表理解:

>>> [x for x in xs if 'abc' in x]
for item in my_list:if item.find("abc") != -1:print item

这是一个相当古老的问题,但我提供这个答案是因为前面的答案不能处理列表中不是字符串(或某种可迭代对象)的项目。这些项目会导致整个列表理解失败,但有一个例外。

要通过跳过不可迭代项来优雅地处理列表中的此类项,请使用以下命令:

[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]

然后,有这样一个列表:

lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]st = 'abc'

您仍将获得匹配的项目(['abc-123', 'abc-456']

可迭代的测试可能不是最好的。从这里得到它:在Python中,如何确定对象是否可迭代?

把这个扔出去:如果你碰巧需要匹配多个字符串,例如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']

如果您只需要知道“abc”是否在其中一个项目中,这是最短的方法:

if 'abc' in str(my_list):

注意:这假设'abc'是字母数字文本。如果'abc'可能只是一个特殊字符(即. []', ).

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:if (item.find('abc')) != -1:print ('Found at ', item)

我是Python新手。我得到了下面的代码,并使其易于理解:

my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']for item in my_list:if 'abc' in item:print(item)

问题:提供abc的信息

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

aa = [ string for string in a if  "abc" in string]print(aa)

Output =>  ['abc-123', 'abc-456']
mylist=['abc','def','ghi','abc']
pattern=re.compile(r'abc')
pattern.findall(mylist)

我做了一个搜索,它需要你输入一个特定的值,然后它会从包含你输入的列表中查找一个值:

my_list = ['abc-123','def-456','ghi-789','abc-456']
imp = raw_input('Search item: ')
for items in my_list:val = itemsif any(imp in val for items in my_list):print(items)

尝试搜索“abc”。

使用Pythons字符串类的__contains__()方法。:

a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']for i in a:if i.__contains__("abc") :print(i, " is containing")
def find_dog(new_ls):splt = new_ls.split()if 'dog' in splt:print("True")else:print('False')

find_dog("Is there a dog here?")

我需要对应于匹配的列表索引,如下所示:

lst=['abc-123', 'def-456', 'ghi-789', 'abc-456']
[n for n, x in enumerate(lst) if 'abc' in x]

输出

[0, 3]

如果您想获取多个子字符串的数据列表

你可以用这种方式改变它

some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']# select element where "abc" or "ghi" is includedfind_1 = "abc"find_2 = "ghi"result = [element for element in some_list if find_1 in element or find_2 in element]# Output ['abc-123', 'ghi-789', 'abc-456']

将nan添加到列表中,下面的工作对我来说:

some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456',np.nan]any([i for i in [x for x in some_list if str(x) != 'nan'] if "abc" in i])