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

python使用String的Template进行参数动态替换的更多相关文章

  1. Java动态替换InetAddress中DNS的做法简单分析2

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...

  2. Word动态替换文本

    public class WordTest2 { public static void main(String[] args) { /** 此Map存放动态替换的内容,key-Word中定义的变量,v ...

  3. 浅析python的string.Template

    摘自:python参考手册. string模块定义了一种新字符串类型Template,简化了特定的字符串置换操作, Template定义一个类 1.template(s),  #s是字符串 s='he ...

  4. Python - 定制pattern的string模板(template) 具体解释

    定制pattern的string模板(template) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 ...

  5. python中string模块各属性以及函数的用法

    任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作.     python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串 ...

  6. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  7. Python装饰器AOP 不定长参数 鸭子类型 重载(三)

    1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被 ...

  8. PyQt的QString和python的string的区别

    转载于http://blog.chinaunix.net/uid-200142-id-4018863.html python的string和PyQt的QString的区别 python string和 ...

  9. Python基本语法_函数属性 & 参数类型 & 偏函数的应用

    目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...

随机推荐

  1. my37_MGR流控对数据库性能的影响以及MGR与主从的性能对比

    mysql> show variables like 'group_replication_flow_control_applier_threshold'; +----------------- ...

  2. linux系统下命令的学习

    本博客是本人工作时做的笔记 ps aux |grep ^profile |grep A190200024 ^ 表示行首匹配 linux查看文件大小: 具体可查看:https://www.cnblogs ...

  3. MVC+Servlet+mysql+jsp读取数据库信息

    首先有以下几个包: 1.controller 控制层,对用户的请求进行响应 2.dao 数据层接口标准 3.daoimpl 数据层实现层 4.model 实体类层 5.service 业务层接口标准 ...

  4. JS21. 使用原生JS封装一个公共的Alert插件(HTML5: Shadow Dom)

    效果预览 Shadow DOM Web components  的一个重要属性是封装--可以将标记结构.样式和行为隐藏起来,并与页面上的其他代码相隔离,保证不同的部分不会混在一起,可使代码更加干净.整 ...

  5. Jenkins触发构建

    目录 一.简介 二.时间触发 定时触发 轮询代码仓库 三.事件触发 由上游任务触发 gitlab通知触发 四.通用触发接口 GWT 提取参数 触发某个具体项目 过滤请求值 控制打印内容 控制响应 一. ...

  6. shell脚本 监控网卡信息

    一.简介 源码地址 日期:2018/6/22 介绍:显示实时输入输出流量 效果图: 二.使用 适用:centos6+ 语言:英文 注意:无 下载 wget https://raw.githubuser ...

  7. shell脚本 微信/钉钉验证登录服务器

    一.简介 登录用户需要二次验证码进行验证 可以配合 监控用户登录,发送通知给企业微信/钉钉 来使用 脚本放到/etc/profile.d/ 目录,登录的时候自动触发 二.微信脚本 1.需要修改Crop ...

  8. <转>单机版搭建Hadoop环境

    安装过程: 一.安装Linux操作系统 二.在Ubuntu下创建hadoop用户组和用户 三.在Ubuntu下安装JDK 四.修改机器名 五.安装ssh服务 六.建立ssh无密码登录本机 七.安装ha ...

  9. [BUUCTF]REVERSE——reverse3

    reverse3 附件 步骤: 例行查壳儿,32位程序,无壳儿 32位ida载入,shift+f12检索程序里的字符串,得到了有关flag的提示,而且看到了ABCDE--78这种字符串,猜测存在bas ...

  10. odoo14 继承改写原生模块的视图优先级问题

    需要类似这样的改写方法: 1.更改id名,方便下方引用!!! 2.使用原生模块的"model"!!! 3.添加字段priority!!!(越小越大) 4.form 和 kanban ...