2014-08-27 78 views
0

多个子我有一个像搜索从一个字符串在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'] 

我给用户一个文本区域,在那里用户可以写任何字符串相匹配的信封在上面的列表中的字符串列表

用户可以输入SUBSTRING由空格隔开: - APAC中国

所以我必须显示包含APAC和中国

List =['APAC_CHINA_UAT_D2','APAC_CHINA_UAT_D5'] 
列表

如果用户输入: - AMER UAT

则列表将

List = ['AMER_US_T8_UAT','AMER_US_W2_UAT'] 

同样为: - AMER美国T8 UAT

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

回答

0

你输入:

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'] 
相关问题