我有一个像下面这样的字符串。
<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&Y Ltd. & M.K. Ltd will be merged.
如何使其成为有效的XML,以便我的etree.XMLParser不会抛出错误。我需要把它转换成类似的东西。
<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&Y Ltd. & 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&Y Ltd. & M.K. Ltd will be merged.
答案 0 :(得分:1)
>>> from lxml import etree
>>> tree = etree.fromstring('<GPE>LUSAKA</GPE> (<ORG>AP</ORG>) -- X&Y Ltd. & M.K. Ltd will be merged.', etree.HTMLParser())
>>> etree.tostring(tree)
'<html><body><gpe>LUSAKA</gpe> (<org>AP</org>) -- X&Y Ltd. & M.K. Ltd will be merged.</body></html>'
>>> tree.xpath('//gpe/text()')
['LUSAKA']