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

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

回到顶部