python 正则多个条件, 条件本身含str 拼接 和 遍历循环

要实现多个条件的正则, 正常应该是如下形式的
功能主要是搜索列名里面满足条件的OES_sensors, 条件是两个, 或的关系
'Step10_.*nm_Avg| Step10_.*nm_Stddev'
这里前面step 是一个循环, 后面Avg 或者stddev 是在featurelist 里面去循环取, 然后拼接

regex = 'Step10_.*nm_Avg| Step10_.*nm_Stddev'

由于我这里面还要拼接用了

regex = [config_step +'_.*nm_'+ statsfeature for statsfeature in featurelist]

如何把这个regex 变成上面想要或的形式呢?
下面写的defin_sensor_type_WLDC 底下的形式也可以满足使用条件, 但是写的有点麻烦 , 请问如何简化一下呢

def List_Search_keyword(list_char,regex):
    match_values = [] 
    for char in list_char:    
        match_char = re.match(regex,char)
        if match_char is not None: 
            match_value = match_char.group()
            if match_value in list_char:
                match_values.append(match_value)
    return match_values

def define_sensor_type_WLDC(allsensors,config_step,featurelist):  
                 
            RFH_sensors = sorted(list(set(List_Search_keyword(allsensors,config_step +'_.*\[RFTime]_Avg'))))
            OES_sensors = [] 
            for statsfeature in featurelist:
                OES_sensorf = sorted(list(set(List_Search_keyword(allsensors,config_step +'_.*nm_'+ statsfeature))))
                OES_sensors.extend(OES_sensorf)   
            measure_sensors = sorted(list(set(allsensors).difference(set((RFH_sensors+OES_sensors)))))#setting_sensors + TimeUsed_sensors
            
            return(RFH_sensors,OES_sensors,measure_sensors)#TimeUsed_sensors,setting_sensors,    
阅读 1.8k
1 个回答

我大概懂了你的意思啦,你是要搜索step10_XXX.Xnm_NNN
其中XXX.X表示200-800的数字值,这些数字也是一个列表中?还是随意组合,是否到800?如果仅仅是数值,有1位小数(不包括800.0),标准表示应该为[2-7]\d\d\.\d
NNN是从featurelist列表中获取的多个值。
对应的规则表达式是

regex=config_step +'_[2-7]\d\d\.\dnm_'+'('+'|'.join([x  for  x  in featurelist])+')'

比如

config_step='Step10_'
featurelist=['Avg','Stddev','AAA']

对应regex'Step10_[2-7]\d\d\.\dnm_(Avg|Stddev|AAA)'

如果config_step 也是循环中取值,比如在config_steps中,则可以一次性获取一个规则式列表:

regexs=[config_step +'_[2-7]\d\d\.\dnm_'+'('+'|'.join([x  for  x  in featurelist])+')' for config_step in config_steps ]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏