繁体   English   中英

从python中的字符串中搜索多个子字符串

[英]search for multiple substrings from a string in python

我有一个类似的字符串列表

Env = [
    'APAC_CHINA_UAT_D2','APAC_CHINA_UAT_D5','APAC_INDIA_Q1_UAT',
    'AMER_US_T8_UAT','AMER_US_W2_UAT','AMER_US_Q9_PROD',
    'EMEA_UK_K8_UAT','EMEA_DUBAI_QA_UAT']

我给用户一个文本区域,用户可以在其中写与上面列表中的Env匹配的任何子字符串

用户可以输入用空格分隔的子字符串:-亚太地区中国

所以我必须显示一个包含亚太地区和中国的列表

List =['APAC_CHINA_UAT_D2','APAC_CHINA_UAT_D5']

如果用户输入:-AMER UAT

然后列表将是

List = ['AMER_US_T8_UAT','AMER_US_W2_UAT']

同样适用于:-AMER US T8 UAT

我只会得到一个列表List = ['AMER_US_T8_UAT']

您的输入:

Env = [
    'APAC_CHINA_UAT_D2',
    'APAC_CHINA_UAT_D5',
    'APAC_INDIA_Q1_UAT',
    'AMER_US_T8_UAT',
    'AMER_US_W2_UAT',
    'AMER_US_Q9_PROD',
    'EMEA_UK_K8_UAT',
    'EMEA_DUBAI_QA_UAT']
search = 'APAC CHINA'

详细,冗长的版本:

List = []                          # empty result list
for e in Env:                      # for each item e of Env
    contains = True                # initially assume that e contains each search string
    for s in search.split():       # for each word s in the search string (split at whitespace)
        if not s in e.split('_'):  # if e (split at '_') does not contain search string s
            contains = False       # e does *not* contain each search string
    if contains:                   # if e contains all search strings
        List.append(e)             # append e to result list
print List                         # print result list

单线:

print [e for e in Env if all([s in e.split('_') for s in search.split()])]

输出:

['APAC_CHINA_UAT_D2', 'APAC_CHINA_UAT_D5']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM