2017-08-05 20 views
-1

替換文本字符串我有一個regex對象,它是re.compile()對象像下面這樣的字典:使用正則表達式編譯對象,每個

p1 = r'\d+' 
p1 = re.compile(p1, re.IGNORECASE) 
regex['p1'] = p1 

p2 = r'[a-z]+' 
p2 = re.compile(p2, re.IGNORECASE) 
regex['p2'] = p2 

而且我有一個字符串,讓我們說這樣的事情。

1234 abcd 123 abc 

我想替換所有的匹配。

regex['p1'].sub(text,'NUM') 
regex['p2'].sub(text,'ALPHA') 

,使最終產品看起來是這樣的:

NUM ALPHA NUM ALPHA 
+0

它應該是'\ d +',而不是'/ d +'和'[a-z] +',而不是'[a-z]'。另外,你不需要整個正則表達式之外的括號。 –

+0

固定。謝謝。 –

+0

修補程序是否有效?還是完全是其他問題? –

回答

1

sub第一個參數應更換,你需要「NUM」 /「ALPHA」切換文本像這樣:

text = "1234 abcd 123 abc" 

regex['p1'].sub('NUM', text) 
# 'NUM abcd NUM abc' 

爲了把東西放在一起:

regex['p1'].sub('NUM', regex['p2'].sub('ALPHA', text)) 
# 'NUM ALPHA NUM ALPHA'