給定一個包含數(shù)字且長度與格式位置皆固定的字符串,如'B83C72D1D8E67'拨扶,現(xiàn)在的需求是凳鬓,刪除給定字符串里的任何一個單個字符為數(shù)字的字符串,其余"連續(xù)2個數(shù)字"則作為1組數(shù)字患民,并判斷該組數(shù)字是否>=50缩举,若符合條件返回50,否則為0匹颤。
對比原字符串仅孩,并根據(jù)上述規(guī)則來修改,預(yù)期輸出應(yīng)是"B50C50DDE50"印蓖。
如果使用傳統(tǒng)的for循環(huán)來寫辽慕,其實還挺費腦子的,光是if語句就嵌套了3層赦肃,下圖是使用for循環(huán)寫出來的代碼溅蛉,雖然結(jié)果符合預(yù)期的輸出公浪,但挺麻煩:
類似這種字符串處理的最優(yōu)解法是re模塊里的sub(),即"正則表達式替換"法温艇,非常非常的方便好用因悲,只需提取符合正則表達式'\d{1,2}'的字符串,再替換成自定義函數(shù)的返回值即可勺爱,請見下圖優(yōu)化后的代碼: