2013-05-29 51 views
1

我知道,在Python中,你可以找到與查找正則表達式和一些處理後取代

re.sub('(b)','\\1BB','abc') 

取代但是,你會如何繼續,如果你想要更多的處理,就像你得到一個單一的數字號碼,你將x添加到它?

我沒有問題的功能和切片做並粘貼原始字符串轉換成一個新的,有改變的正則表達式匹配模式,但什麼是這樣做的最簡單的方法?

回答

2

可以在re.sub調用一個函數,而不是一個簡單的替換字符串:

>>> re.sub('(\d+)', 
...  lambda x: ' {}+3={} '.format(x.group(1),int(x.group(1))+3), 
...  'a12c') 
'a 12+3=15 c' 

或者,

def r(m): 
    return ' {}+{}={} '.format(m.group(1),m.group(2), 
          int(m.group(1))+int(m.group(2))) 

>>> print re.sub('(\d)(\d)',r,'a12c') 
'a 1+2=3 c'