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.html、https://www.cnblogs.com/QianyuQian/p/14637990.html
python使用String的Template进行参数动态替换的更多相关文章
- Java动态替换InetAddress中DNS的做法简单分析2
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- Word动态替换文本
public class WordTest2 { public static void main(String[] args) { /** 此Map存放动态替换的内容,key-Word中定义的变量,v ...
- 浅析python的string.Template
摘自:python参考手册. string模块定义了一种新字符串类型Template,简化了特定的字符串置换操作, Template定义一个类 1.template(s), #s是字符串 s='he ...
- Python - 定制pattern的string模板(template) 具体解释
定制pattern的string模板(template) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28625179 ...
- python中string模块各属性以及函数的用法
任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串 ...
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- Python装饰器AOP 不定长参数 鸭子类型 重载(三)
1 可变长参数与关键字参数 *args代表任意长度可变参数 **kwargs代表关键字参数 用*args和**kwargs只是为了方便并没有强制使用它们. 缺省参数即是调用该函数时,缺省参数的值若未被 ...
- PyQt的QString和python的string的区别
转载于http://blog.chinaunix.net/uid-200142-id-4018863.html python的string和PyQt的QString的区别 python string和 ...
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...
随机推荐
- idea如何在git上将分支代码合并到主干
1.首先将idea中的代码分支切换到master分支,可以看到我们在dev上提交的代码 在master上是没有的 2.如图所示,在remote branch 上选择分支,点击后面的三角图标,展开之后选 ...
- 【Linux卷管理】LVM创建与管理
安装LVM 首先确定系统中是否安装了lvm工具: [root@jetsen ~]# rpm -qa|grep lvm system-config-lvm-1.1.5-1.0.el5 lvm2-2.02 ...
- request获取请求参数通用方式
package com.hopetesting.web.request;import javax.servlet.ServletException;import javax.servlet.annot ...
- 6.Vue.js-条件与循环
条件判断 v-if 条件判断使用 v-if 指令: <div id="app"> <p v-if="seen">现在你看到我了</ ...
- arcgis api for js回调函数如何等待同步
arcgis js开发往往会遇到同步异步的问题,有可能在上一步使用了arcgis js模块回调函数,下一步需要用上一步回调函数的结果,但是因为JavaScript是异步执行的,它并不会等待上一步的回调 ...
- Git remote 远程仓库链接管理
SVN 使用单个集中仓库作为开发人员的通信枢纽,通过在开发人员的工作副本和中央仓库之间传递变更集来进行协作. 这与 Git 的分布式协作模型不同,后者为每个开发人员提供了自己的仓库副本,并具有自己的本 ...
- Table.PromoteHeaders升降标题Table…Headers(Power Query 之 M 语言)
数据源: 任意数据源 目标: 将第一行提升为标题 操作过程: [主页](或[转换])>[将第一行用作标题] M公式: = Table.PromoteHeaders( 表, [PromoteAll ...
- JSONP是个嘛玩意?解决跨域问题?
浏览器同源策略 限制js向 其他域名发起请求,浏览器调试报错如下 JSONP 是一种解决方法 浏览器不会阻止带有src属性的标签发请求.所以可以常用的 <script src="xxx ...
- Go 的 golang.org/x/ 系列包和标准库包有什么区别?
在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如: golang.org/x/net/html 和 net/html, golang.org/x/crypto 和 crypto. 那 ...
- 基于 SoC 的卷积神经网络车牌识别系统设计(0)摘要
NOTES:现如今,芯片行业无比火热啊,无论是前景还是钱景,国家芯片战略的发布,公司四五十万的年薪,着实令人非常的向往,为了支持芯片设计者,集成了工作.科研.竞赛于一体的<基于 SoC 的卷积 ...