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除 ...
随机推荐
- Linux 性能优化笔记:应用监控
指标监控 跟系统监控一样,在构建应用程序的监控系统之前,首先也需要确定,到底需要监控哪些指标.特别是要清楚,有哪些指标可以用来快速确认应用程序的性能问题. 对系统资源的监控,USE 法简单有效,却不代 ...
- Redis哨兵 部署和配置
目录 一.哨兵简介 哨兵介绍 哨兵原理 二.哨兵部署 环境介绍 哨兵配置 三.使用验证 一.哨兵简介 哨兵介绍 Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在 ...
- CPU状态信息us,sy等含义
目录 一.概述概述 二.详解 us和sy ni id wa hi和si st 三.总结 一.概述概述 比如一秒内有100个cpu时间片,这个cpu时间片就是cpu工作的最小单位.那么这100个cpu时 ...
- ciscn_2019_es_7
这是我第一次见到srop的用法的题目,于是在此记录方便以后的复习 拿到程序例行检查 将程序放入ida中 可以看到栈的大小是0x10,却可以显示出0x30的内容,所以我们可以通过这个溢出泄露出/bin/ ...
- 日历共享(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 为了某一个项目,我们建好了一整套的日历,除了标准日历里加上了所有的假期以外,其他来自火星的水星的金星的土星的木星的BT的不 ...
- sublime打开中文文件乱码以及打开文件出现.dump
一.中文乱码 原因:中文文件由gbk编码,刚安装的sublime不支持转码 解决方法:调用ctrl+shift+p,输入:install package,回车,在稍后弹出的安装包框中搜索:Conver ...
- CF656C Without Text 题解
Content 输入一个字符串 \(s\),遍历每一个字符,如果这个字符是小写字母,那么答案就加上这个字母的字母表序:否则,如果这个字符是小写字母,那么答案就减去这个字母的字母表序.求最后的答案. 字 ...
- 后端调用WebApi
using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.W ...
- java 多线程: Thread 锁ReentrantLock 常用方法
注意 reentrantLock 和 同步代码块儿一样,同一个时刻只能一个线程获取锁,也就是共用锁的代码块部分,线程是顺序执行的 ReentrantLock 常用方法 getHoldCount获取当前 ...
- Do PDB Files Affect Performance?
After a detour into Historical Debugging, it's time to come back to return to answering questions ab ...