如何检查一个字符串是否为字符串列表中某个字符串的子串

857

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

xs = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
以下代码检查列表中是否存在'abc',但无法检测到'abc-123''abc-456':
if 'abc' in xs:

28
检查相反情况(如果一个字符串包含多个字符串中的任意一个):https://dev59.com/emw15IYBdhLWcg3wkMnz#6531704 - Antonio
如果条目的左侧部分是唯一的,请考虑从列表构建字典:基于部分字符串在列表中查找条目 - Georgy
请参考Raymond Hettinger的这个答案,它应该是这个问题的答案。 - mkrieger1
18个回答

4

我需要与以下匹配项对应的列表索引:

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

[n for n, x in enumerate(lst) if 'abc' in x]

输出

[0, 3]

3

如果您想获取多个子字符串的数据列表,您可以按照以下方式进行更改:

将它更改为这样

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']

1
向列表中添加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])

1
mylist=['abc','def','ghi','abc']

pattern=re.compile(r'abc') 

pattern.findall(mylist)

在Python3.6中,这会产生一个错误:TypeError:期望字符串或类似字节的对象。 - AimForClarity
2
@AimForClarity 是的。在Python3.6中,re.findall期望一个字符串作为输入。另一种方法是将列表转换为字符串。
import re
mylist=['abc','def','ghi','abcff']
my_list_string=''.join(mylist)
string_to_find="abc"
res=re.findall(string_to_find,my_list_string)
print(res)
- arun_munagala
1
抱歉格式不佳,由于某些原因无法进行适当的换行。 - arun_munagala

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

for item in my_list:
    if (item.find('abc')) != -1:
        print ('Found at ', item)

0
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?")

0

我进行了一次搜索,需要您输入一个特定的值,然后它将从包含您输入的值的列表中查找一个值:

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”。


-2

问题:提供有关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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接