旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

详解lxml处置惩罚xml时的字符编码题目【XML教程】,lxml,xml,字符编码

作者:搜教程发布时间:2019-12-01分类:XML教程浏览:31评论:0


导读:为了简化题目,就把xml的内容简化为以下的情势:<?xmlversion="1.0"encoding="gbk"?><DOCUMENT><...
为了简化题目,就把xml的内容简化为以下的情势:

<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是率性]]></da></DOCUMENT>

它的encoding为gbk,个中的节点有一个为中文字符
运用lxml提取节点的值时涌现了以下的非常

lxml.etree.XMLSyntaxError: Extra content at the end of the document

此时对应的Python剧本为:

tst = u'<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是率性]]></da></DOCUMENT>'
for event,element in etree.iterparse(BytesIO(tst.encode('utf-8'))):
    print("%s, %s" % (element.tag, element.text))

不过简化之前,报的是别的一个非常

lxml.etree.XMLSyntaxError: input conversion failed due to input error, bytes 0x8B 0x2C 0xE6 0x9D

不管非常是哪个,猜想照样和字符的编码情势有关。
经由种种尝试无果,厥后在stackoverflow上看到这篇文章,文中提到的题目和xml中的encoding值有关,尝试了增加了一段代码

tst = u'<?xml version="1.0" encoding="gbk"?><DOCUMENT><da><![CDATA[中文,就是率性]]></da></DOCUMENT>'
tst = tst.replace('encoding="gbk"', 'encoding="utf-8"')
for event,element in etree.iterparse(BytesIO(tst.encode('utf-8'))):
    print("%s, %s" % (element.tag, element.text))

增加了一个替代的语句,将之前的encoding="gbk"替代成encoding:"utf-8"
因而终究获得了效果:

da, 中文,就是率性
DOCUMENT, None

以上就是详解lxml处置惩罚xml时的字符编码题目的细致内容,更多请关注ki4网别的相干文章!

标签:lxmlxml字符编码


欢迎 发表评论: