[英]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.