2015-06-21 38 views
1

使用變量中的正則表達式是容易的,實現這一目標的一個方法是:如何在python中使用正則表達式中的字典?

>>> z = '23' 
>>> re.sub(r'p[kv]', r"%s" %z, 'pvkkpkvkk') 
'23kk23vkk' 

但是,如果替換值存儲在一個字典爲:

d = {'k':'23', 'v':'24'} 

,我想使用字典來替換替換值。我想要這樣的事情:

re.sub(r'p([kv])', r"%s" %d[\1], 'pvkkpkvkk') 

我知道這是行不通的。請幫我找出正確的正則表達式。預期產出與上述相同。

回答

2

您可以傳遞一個任意函數,該函數需要一個對象match並返回一個字符串來替換它,如replre.sub;例如:

>>> import re 
>>> d = {'k': '23', 'v': '24'} 
>>> re.sub(
    r'p([kv])', 
    lambda match: d[match.group()[1]], 
    'pvkkpkvkk', 
) 
'24kk23vkk' 
+0

完美!感謝你的回答... –

相關問題