2010-07-23 33 views
0

我有結束標籤,接着通過一個或多個突片(X09),接着加入新的開始標籤followd一個回車換行符(x0Dx0A)。Python的正則表達式問題

事情是這樣的:

</tag1>x0Dx0Ax09x09x09<tag2> or </tag1>x0Dx0Ax09x09x09x09x09<tag2> 

什麼Python的正則表達式,我應該使用像這樣的東西來替代它:

</tag1><tag3>content</tag3><tag2> 

在此先感謝。

+1

自己解析XML?不是一個好主意。 IT部門認爲你將把代碼移植到Python中會有其他問題3.如何嘗試使用現有的XML解析解決方案? – sorin 2010-07-23 21:25:52

回答

1

這裏是像你說的話,你需要編寫代碼:

>>> import re 
>>> sample = '</tag1>\r\n\t\t\t\t<tag2>' 
>>> sample 
'</tag1>\r\n\t\t\t\t<tag2>' 
>>> pattern = '(</tag1>)\r\n\t+(<tag2>)' 
>>> replacement = r'\1<tag3>content</tag3>\2' 
>>> re.sub(pattern, replacement, sample) 
'</tag1><tag3>content</tag3><tag2>' 
>>> 

注意\r\n\t+可能有點太具體,特別是如果你的生產投入是不是你的控制之下。採用更通用的\s*(零個或多個空白字符)可能會更好。

使用正則表達式來解析XML和HTML通常不是一個好主意......儘管在這裏很難看到失敗模式(除了獲取模式的基本錯誤是正確的)之外,您可能想告訴我們什麼是根本問題是,以防其他解決方案更好。