使用Python處理複雜字串的必殺技-re.sub()的妙用

weixin_33866037發表於2018-09-05

給定一個包含數字且長度與格式位置皆固定的字串,如'B83C72D1D8E67',現在的需求是,刪除給定字串裡的任何一個單個字元為數字的字串,其餘"連續2個數字"則作為1組數字,並判斷該組數字是否>=50,若符合條件返回50,否則為0。

對比原字串,並根據上述規則來修改,預期輸出應是"B50C50DDE50"。

如果使用傳統的for迴圈來寫,其實還挺費腦子的,光是if語句就巢狀了3層,下圖是使用for迴圈寫出來的程式碼,雖然結果符合預期的輸出,但挺麻煩:


2607322-63c9ed92d93a3ed9.png

類似這種字串處理的最優解法是re模組裡的sub(),即"正規表示式替換"法,非常非常的方便好用,只需提取符合正規表示式'\d{1,2}'的字串,再替換成自定義函式的返回值即可,請見下圖優化後的程式碼:


2607322-e4cf076a7a53986a.png

相關文章