清理HTML以保留自定义标记

时间:2014-02-11 17:21:26

标签: python xml xml-parsing nltk tidy

我有一个像下面这样的字符串。

<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&Y Ltd. &amp; M.K. Ltd will be merged.

如何使其成为有效的XML,以便我的etree.XMLParser不会抛出错误。我需要把它转换成类似的东西。

<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&amp;Y Ltd. &amp; M.K. Ltd will be merged.

为此,我尝试使用tidylib。但它删除了所有自定义标签。见代码

options = {
    'wrap': 0,
    'indent': 0,
    'output-xhtml': 1,
    'numeric-entities': 1
}
html, warnings = tidylib.tidy_fragment(data, options)

输出

LUSAKA (AP) -- X&amp;Y Ltd. &amp; M.K. Ltd will be merged.

1 个答案:

答案 0 :(得分:1)

>>> from lxml import etree
>>> tree = etree.fromstring('<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&Y Ltd. &amp; M.K. Ltd will be merged.', etree.HTMLParser())
>>> etree.tostring(tree)
'<html><body><gpe>LUSAKA</gpe> (<org>AP</org>) -- X&amp;Y Ltd. &amp; M.K. Ltd will be merged.</body></html>'
>>> tree.xpath('//gpe/text()')
['LUSAKA']