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线程池使用
    js实现递归菜单无限层
    treeTable实现排序
    spring-dm 一个简单的实例
    Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)
    Spring DM 2.0 环境配置 解决Log4j问题
    Spring.DM web开发环境搭建
    STL容器的排序
    排序例子
  • 原文地址:https://www.cnblogs.com/cuitang/p/15479670.html
Copyright © 2011-2022 走看看