接口基础-正则表达式提取和替换
0、导入re模块
1、创建全局数据池类
# 存储全局数据(三个用户账号、未注册的手机号等)
2、准备一个要参数化的字段,${not_existed_tel}就是一个需要参数化的地方
sql='{"mobile_phone": "${not_existed_tel}", "pwd": "12345678", "type": 1, "reg_name": "KeYou"}'
|
3、用正则表达式把要参数化的位置匹配到
把sql字符串中的${}查询出来,返回一个列表
result = re.findall(r"\${.*?}", sql)
|
4、准备要替换的参数
for item in result:
# b.从全局数据池中读取参数
data = getattr(GlobalData, item)这里就是参数,也就是要替换的值
# c.替换指定的数据,然后将原始字符串sql覆盖
# 也可以使用re.sub去替换
sql = sql.replace(item, str(data)) 这里就是将${not_existed_tel}替换成123456789
pass
|
5、用替换的方式把值替换到参数化的位置
上述模块中sql = sql.replace(item, str(data)) 这里就是替换,
|
6封装的方法
"""
-------------------------------------------------
正则表达式替换,参数化
-------------------------------------------------
"""
# 0、导入re模块
import re
from scripts.handle_mysql2 import handle_mysql#这个模块是创建未被注册是手机号码
# 1、创建全局数据池类
# 存储全局数据(三个用户账号、未注册的手机号等)
class GlobalData:
pass
class Parameterize:
@staticmethod
def to_parma(src):
# 3、定义正则表达式
# a.findall方法将正则匹配上的值放在列表中返回
# b.第一个参数为正则表达式,需要在字符串前加r
# c.第二个参数为待匹配的字符串
# d.如果匹配不上,会返回空列表
# e.$有特殊含义,所以需要使用\来转义
# f. .*?可以匹配任意数据,为非贪婪模式进行匹配
# a.把src字符串中的说哟${}查询出来,返回一个列表
result = re.findall(r"\${.*?}", src)
for item in result:
# b.从全局数据池中读取参数
data = getattr(GlobalData, item)
# c.替换指定的数据,然后将原始字符串src覆盖
# 也可以使用re.sub去替换
src = src.replace(item, str(data))
pass
return src
if __name__ == '__main__':
sql='{"mobile_phone": "${not_existed_tel}", "pwd": "12345678", "type": 1, "reg_name": "KeYou"}'
do_sql=handle_mysql()
not_existed_mobile = do_sql.creat_not_existed_mobile()#创建一个未被注册的手机号码
setattr(GlobalData,"${not_existed_tel}",not_existed_mobile)#在全局数据池中创建动态类属性${not_existed_tel}
do = Parameterize()
do.to_parma(sql)
pass
|