python使用String的Template进行参数动态替换

1、前言:

之前使用string的find(),从指定的param里面查找,是否包含了某个字符,有的话,使用replace进行替换,一个接口的param要替换的参数少的话,使用这种方式,的确可行,如果要替换参数比较多,而且逻辑比较复杂的,就会存在先替换了一个参数A,然后赋值保存到变量B中,第二次在变量B的基础上,继续进行查找替换,这里就需要比较多的逻辑,才能将这个param,替换成预期的效果,传到接口做替换。

2、Find()!=-1进行替换

如下:要动态替换的有四个参数,分别是${shoolcode}、${classCode}、${gradeCode}、${student_mb}

Param_data={"shoolcode":"${shoolcode}","classCode":"${classCode}","gradeCode":"${gradeCode}","studentmember":"${student_mb}","Date":"2021-05-08 11:53:51","Status":4}

实现参数动态替换的参数逻辑是:先替换学校,然后将替换后param_data保存到A,在A的基础上查找是否存在classCode,若存在进行替换,将替换后的A,保存到B;在B的基础上,继续查找gradeCode是否存在,若存在,进行替换,保存到C;在C的基础上,继续查找是否存在student_mb,若存在,进行替换,保存到最终的的结果result,实现逻辑,进行了四次的判断查找

 

3、String的Template方法进行替换(简化了参数替换!!)

优化的方法,使用string的template字符串模板方法进行替换

首先,定义替换的模板,以字典形式

param_data = {
    "shoolcode": "广州大学",
    "classCode": "1班",
    "gradeCode": "一年级",
    "student_mb": "001"
}
param = '{"shoolcode":"${shoolcode}","classCode":"${classCode}", "gradeCode":"${gradeCode}",' 
        '"student_mb":"${student_mb}"}'
res = Template(param).substitute(param_data)
print(res)

4、使用Template的说明

模板s中默认以 $ 标识需要替换的变量,在substitute以键值对的格式定义替换变量的值,并且key值需要与模板中的变量名保持一致

Template有两个定义替换变量的方法:

substitute:模板所带的keywords必须被全部替换,不然会抛出KeyError异常

safe_substitute:不会抛出异常,能配对的配对。不能配对的保留原来的值

参考文章:

https://www.cnblogs.com/testlearn/p/14813688.htmlhttps://www.cnblogs.com/QianyuQian/p/14637990.html

原文地址:https://www.cnblogs.com/cuitang/p/15479670.html