Python巧用正則表達式,完成接口參數替換

最近給Python11期的小朋友們上課,遇到了一個參數替換的問題,首先描述下場景: 須要參數化的數據以下所示:html

這個時候若是利用單純的if判斷和字符串的find和replace方法,作起來是很是不明智的!代碼量也很是多,也很是容易的混淆! 這個時候,若是引入正則表達式,就能夠很是輕鬆的解決這個問題!! 昂~~那麼利用場景的話,就不一一描述了,咱們自動化課堂上見!先分步驟分模塊瞭解下正則表達式這個新鮮玩意!python

正則是什麼

用一句通俗易懂的話來講:符合必定規則的字符來匹配咱們本身想要的內容!正則表達式

如何學習正則

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)函數,返回的是匹配的第一個括號裏面的字符串

咱們如何完成參數裏面的正則匹配呢?代碼以下:ui

key=re.search("\$\{(.*?)\}",s).group()#要替換的對象
value=re.search("\$\{(.*?)\}",s).group(1)#根據這個能夠到GetData裏面拿到對應的value值,這裏須要利用反射
s=s.replace(key,str(getattr(GetData,value)))#完成替換,注意getattr的用法
print(s)

留下練習題:spa

 {"memberId":"${memberID}","password":"123456","loanId":"${loanId}","amount":"-100"} 若是是這個字符串,你打算怎麼去完成替換呢?參考答案能夠找檸檬班的輔導員!
相關文章
相關標籤/搜索