查找带换行符或空格的字符串以修复损坏的xml输入

时间:2012-03-06 12:33:54

标签: python xml lxml

您好我在文件中找到一个包含以下符号和空格或换行符的字符串。 我想找到破损的标签

</answ

稍后替换它... xml文件如下所示:

enter image description here

通常我认为我可以通过

找到这个
search = i.find('</answ ') 

#or newline by:
vorkommen = i.find('</answ \n ') 

但它返回-1 ......而那不是真的......

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以扩展您的空白字符集以包含标签,如下所示。

import re
search = re.search(r'</answ\s', i).start()

答案 1 :(得分:1)

为什么不使用xml解析器来查找错误?

etree.fromstring(u'<foo>text</fo\no>')提升XMLSyntaxError: expected '>', line 2, column 1,因此只要您将文字保留在某种流中,就可以操纵它来删除换行符,然后重新解析。

引发的异常设置position属性以及代码属性。

或者,您可以配置lxml以使其更加健壮:

In [39]: parser = etree.XMLParser(recover=True)

In [40]: etree.fromstring(u'<foo>text</fo\no>', parser)
Out[40]: <Element foo at 0x55fd798>

请参阅:http://lxml.de/parsing.html以及http://lxml.de/api/index.htmlhttp://lxml.de/api.html#error-handling-on-exceptions上的API参考