2010-07-23 78 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通常不是一个好主意......尽管在这里很难看到失败模式(除了获取模式的基本错误是正确的)之外,您可能想告诉我们什么是根本问题是,以防其他解决方案更好。