变量的值支持是列表,并且可以获取其中值,如${var[0][0]}
This commit is contained in:
parent
e385aa81b4
commit
29cbc3406b
|
@ -25,8 +25,18 @@ def get_value(data, value):
|
|||
# for key in data:
|
||||
# __relevance = get_value(data[key], value)
|
||||
for key in data:
|
||||
if isinstance(data[key], dict) or isinstance(data[key], list):
|
||||
if isinstance(data[key], dict):
|
||||
get_value(data[key], value)
|
||||
elif isinstance(data[key], list):
|
||||
for each in data[key]:
|
||||
if isinstance(each, dict):
|
||||
get_value(each, value)
|
||||
# for each in data[key]:
|
||||
# if isinstance(each, dict):
|
||||
# break
|
||||
else:
|
||||
if key == value:
|
||||
__relevance.append(data[key])
|
||||
else:
|
||||
if key == value:
|
||||
__relevance.append(data[key])
|
||||
|
@ -54,8 +64,11 @@ def get_relevance(data, relevance_list, relevance=None):
|
|||
# 去除参数[n]标识
|
||||
for index, value in enumerate(relevance_list):
|
||||
mark = re.findall(r"\[\-?[0-9]*\]", value)
|
||||
if mark:
|
||||
relevance_list[index] = value.strip(mark[0])
|
||||
# if mark:
|
||||
# relevance_list[index] = value.strip(mark[0])
|
||||
for m in mark:
|
||||
value = value.replace(m, '')
|
||||
relevance_list[index] = value
|
||||
|
||||
# 去除重复参数
|
||||
relevance_list = list(set(relevance_list))
|
||||
|
|
|
@ -66,21 +66,32 @@ def replace_relevance(param, relevance=None):
|
|||
# 关联参数多值时指定索引值替换
|
||||
mark = re.findall(r"\[\-?[0-9]*\]", each)
|
||||
# 判断关联参数是否指定索引值var[n]
|
||||
if mark:
|
||||
if len(mark)==0:
|
||||
if isinstance(relevance[each], list):
|
||||
value = relevance[each][0]
|
||||
else:
|
||||
value = relevance[each]
|
||||
elif len(mark)==1:
|
||||
var = each.strip(mark[0])
|
||||
n = int(mark[0].strip('[').strip(']'))
|
||||
value = relevance[var][n]
|
||||
each = each.replace('[', '\[').replace(']', '\]')
|
||||
else:
|
||||
if isinstance(relevance[each], list):
|
||||
value = relevance[each][0]
|
||||
else:
|
||||
value = relevance[each]
|
||||
var = each
|
||||
for m in mark:
|
||||
var = var.replace(m, '')
|
||||
n1 = int(mark[0].strip('[').strip(']'))
|
||||
n2 = int(mark[1].strip('[').strip(']'))
|
||||
value = relevance[var][n1][n2]
|
||||
each = each.replace('[', '\[').replace(']', '\]')
|
||||
|
||||
# 生成正在表达式并替换关联参数
|
||||
pattern = re.compile('\${' + each + '}')
|
||||
try:
|
||||
param = re.sub(pattern, value, param)
|
||||
if param.strip('${' + each + '}'):
|
||||
param = re.sub(pattern, str(value), param)
|
||||
else:
|
||||
param = re.sub(pattern, value, param)
|
||||
except TypeError:
|
||||
param = value
|
||||
except KeyError:
|
||||
|
|
Loading…
Reference in New Issue