0
我试图解析编码为utf-8
的文件。除了写入文件之外,没有任何操作存在问题(或者至少我认为是这样)。最小工作示例如下:违反字符编码
from lxml import etree
parser = etree.HTMLParser()
tree = etree.parse('example.txt', parser)
tree.write('aaaaaaaaaaaaaaaaa.html')
将example.txt:
<html>
<body>
<invalid html here/>
<interesting attrib1="yes">
<group>
<line>
δεδομένα1
</line>
</group>
<group>
<line>
δεδομένα2
</line>
</group>
<group>
<line>
δεδομένα3
</line>
</group>
</interesting>
</body>
</html>
我已经知道一个similar previous question,但要么不指定输出编码,或使用utf8
或iso-8859-7
我没能解决问题。
我得出结论,该文件在utf8
,因为它在选择此编码时在Chrome上正确显示。我的编辑(凯特)对此表示赞同。
我没有运行时错误,但输出不符合要求。 实施例输出与tree.write('aaaaaaaaaaaaaaaaa.html', encoding='utf-8')
:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<invalid html="" here=""/><interesting attrib1="yes"><group><line>
δεδομÎνα1
</line></group><group><line>
δεδομÎνα2
</line></group><group><line>
δεδομÎνα3
</line></group></interesting></body></html>
你得到了什么错误,你怎么得到它?请张贴破解的代码和错误信息。你链接的问题告诉你,'lxml'以ASCII形式写入所有内容,除非你不告诉它;你尝试过'tree.write(,encoding =“utf-8”)吗? –
katrielalex
2010-09-23 17:44:08
我编辑了这个问题。我没有运行时错误。不幸的是,你可以看到输出没有被正确编码。 – 2010-09-23 17:58:01
我不知道这个库,但也许你必须指定输入编码(它可能默认为ASCII,或者你的本地默认编码)。为什么,顺便说一句,你是否在这个例子中使用了一个无效的HTML文档? – 2010-09-23 18:05:24