码迷,mamicode.com
首页 > 其他好文 > 详细

巧用正则表达式,完成接口参数替换

时间:2020-02-29 14:58:29      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:数据   判断   代码量   min   怎么   第一个   用法   辅导   描述   

最近给Python11期的小朋友们上课,遇到了一个参数替换的问题,首先描述下场景: 需要参数化的数据如下所示:

技术图片
 

 

这个时候如果利用单纯的if判断和字符串的find和replace方法,做起来是非常不明智的!代码量也非常多,也非常容易的混淆! 这个时候,如果引入正则表达式,就可以非常轻松的解决这个问题!! 昂~~那么利用场景的话,就不一一描述了,我们自动化课堂上见!先分步骤分模块了解下正则表达式这个新鲜玩意!

正则是什么

用一句通俗易懂的话来说:符合一定规则的字符来匹配我们自己想要的内容!

如何学习正则

python有一个专门的正则模块re,终于如何使用这些,我当然不会说技术图片 ~网络上资源很多,but,给大家安利下我们小简老师的博客,有详细的讲解这个正则: -简佬博客地址,请戳我!! 不过这个博客未完待续,等着小简老师更新吧!

我们实用的场景步骤

1:准备一个get_data模块,里面有个GetData类,代码如下,存储我们各类想要的数据属性值:

class GetData:
    admin_tel=‘18688773467‘
    loan_member_id=‘23357‘
    normal_tel=‘18688773468‘
    memberID=‘23456‘
    loanId=‘12232‘

2:要替换的参数,我们先举个例子,如下所示:

{"mobilephone":"${admin_tel}","pwd":"123456"}

正则表达式是:\${(.*?)}

重点普及以下search函数: re.search("\${(.*?)}",s) :该函数的作用是会返回遇到的第一个符合的匹配值,如果不存在就返回None

re.search("\${(.*?)}",s).group():group()等同于group(0)函数,返回的是匹配的整个字符串

re.search("\${(.*?)}",s).group(1):group(1)函数,返回的是匹配的第一个括号里面的字符串

我们如何完成参数里面的正则匹配呢?代码如下:

key=re.search("\$\{(.*?)\}",s).group()#要替换的对象
value=re.search("\$\{(.*?)\}",s).group(1)#根据这个可以到GetData里面拿到对应的value值,这里需要利用反射
s=s.replace(key,str(getattr(GetData,value)))#完成替换,注意getattr的用法
print(s)

留下练习题: {"memberId":"${memberID}","password":"123456","loanId":"${loanId}","amount":"-100"} 如果是这个字符串,你打算怎么去完成替换呢?参考答案可以找柠檬班的辅导员!

巧用正则表达式,完成接口参数替换

标签:数据   判断   代码量   min   怎么   第一个   用法   辅导   描述   

原文地址:https://www.cnblogs.com/nmb123/p/12382767.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!