zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《java技术》第三次作业
    《Java技术》第二次作业
    《java技术》第一次作业
    java3
    java2
    java1
    开闭原则
    迪米特原则
    接口隔离原则
    里氏替换原则
  • 原文地址:https://www.cnblogs.com/cuitang/p/15479670.html
Copyright © 2011-2022 走看看