测试字符串中的字符串列表,如果匹配,则返回找到的值

2024-06-12 03:52:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个清单

list = ['DI', 'CI', 'CS', 'TQ','CE']

和第二个包含字符串的列表

list_string = ['dd4/DI/dew', '55t/ft54/CS/rgd/fge', '32g/tt/CE/45/543/g54', '454/533/633/76']

我想返回一个列表,长度与list_string相同,元素在list中,如果它存在,如果不返回'others',类似这样

return_list = ['DI', 'CS', 'CE', 'others']

Tags: 字符串ci列表stringtqcslistce
3条回答

以下是我的尝试:

list = ['DI', 'CI', 'CS', 'TQ', 'CE']

list_string = ['dd4/DI/dew',
               '55t/ft54/CS/rgd/fge',
               '32g/tt/CE/45/543/g54',
               '454/533/633/76']

return_list = [tuple(filter(lambda y: y in x, list))[0] if
    len(tuple(filter(lambda y: y in x, list))) else
    'others'
    for x in list_string]

print(return_list)

以下是结果,与您的预期结果相同:

['DI', 'CS', 'CE', 'others']

如果使用正则表达式,请使用mylist作为第一个列表,因为list不应是变量名:

import re

mylist = ['DI', 'CI', 'CS', 'TQ','CE']
list_string = ['dd4/DI/dew', '55t/ft54/CS/rgd/fge', '32g/tt/CE/45/543/g54', '454/533/633/76']

pat = '|'.join(re.escape(y) for y in mylist)
return_list = [''.join(re.findall(pat,x)) if re.search(pat,x) else 'others' for x in list_string]

以下代码应该执行您想要的操作:

list = ['DI', 'CI', 'CS', 'TQ','CE']
list_string = ['dd4/DI/dew', '55t/ft54/CS/rgd/fge', '32g/tt/CE/45/543/g54', '454/533/633/76']

return_list = []
element_exists = False
for element in list:
    for word in list_string:
        if element in word:
            return_list.append(element)
        else:
            element_exists = False

if element_exists is False:
    return_list.append('others')
print(return_list)

相关问题 更多 >