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,
回答:
我大概懂了你的意思啦,你是要搜索step10_XXX.Xnm_NNN
其中XXX.X
表示200-800的数字值,这些数字也是一个列表中?还是随意组合,是否到800?如果仅仅是数值,有1位小数(不包括800.0),标准表示应该为[2-7]\d\d\.\d
NNN
是从featurelist
列表中获取的多个值。
对应的规则表达式是
python">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 ]
以上是 python 正则多个条件, 条件本身含str 拼接 和 遍历循环 的全部内容, 来源链接: utcz.com/p/938444.html