如何检查字符串是否是字符串列表中项目的子字符串
- 2024-12-03 08:45:00
- admin 原创
- 158
问题描述:
如何搜索包含'abc'
以下列表中的字符串的项目?
xs = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
以下检查是否'abc'
在列表中,但不检测'abc-123'
和'abc-456'
:
if 'abc' in xs:
解决方案 1:
检查'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]
解决方案 2:
只是把这个抛出来:如果你碰巧需要匹配多个字符串,例如abc
和def
,你可以将两个理解组合如下:
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']
解决方案 3:
用于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]
解决方案 4:
如果你只是想知道“abc”是否在某个项目中,这是最短的方法:
if 'abc' in str(my_list):
注意:这假设 'abc' 是字母数字文本。如果 'abc' 可能只是一个特殊字符(即 []', ),请不要使用它。
解决方案 5:
这是一个相当老的问题,但我提供这个答案是因为之前的答案无法处理列表中不是字符串(或某种可迭代对象)的项目。这样的项目会导致整个列表理解失败并出现异常。
要通过跳过不可迭代的项目来优雅地处理列表中的此类项目,请使用以下命令:
[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 中,如何确定对象是否可迭代?
解决方案 6:
x = 'aaa'
L = ['aaa-12', 'bbbaaa', 'cccaa']
res = [y for y in L if x in y]
解决方案 7:
for item in my_list:
if item.find("abc") != -1:
print item
解决方案 8:
any('abc' in item for item in mylist)
解决方案 9:
我是 Python 新手。我让下面的代码运行起来并使其易于理解:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if 'abc' in item:
print(item)
解决方案 10:
使用__contains__()
Python字符串类的方法:
a = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for i in a:
if i.__contains__("abc") :
print(i, " is containing")
解决方案 11:
我需要与匹配项对应的列表索引,如下所示:
lst=['abc-123', 'def-456', 'ghi-789', 'abc-456']
[n for n, x in enumerate(lst) if 'abc' in x]
输出
[0, 3]
解决方案 12:
如果你想获取多个子字符串的数据列表
你可以这样改变
some_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
# select element where "abc" or "ghi" is included
find_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']
解决方案 13:
mylist=['abc','def','ghi','abc']
pattern=re.compile(r'abc')
pattern.findall(mylist)
解决方案 14:
将 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])
解决方案 15:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
for item in my_list:
if (item.find('abc')) != -1:
print ('Found at ', item)
解决方案 16:
我做了一个搜索,它要求你输入一个特定的值,然后它会从包含你输入的列表中查找一个值:
my_list = ['abc-123',
'def-456',
'ghi-789',
'abc-456'
]
imp = raw_input('Search item: ')
for items in my_list:
val = items
if any(imp in val for items in my_list):
print(items)
尝试搜索“abc”。
解决方案 17:
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?")
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD