Я пытаюсь разобрать файл, закодированный в utf-8
. Никакая операция не имеет проблем, кроме записи в файл (по крайней мере, я так думаю). Ниже приведен минимальный рабочий пример:
from lxml import etree
parser = etree.HTMLParser()
tree = etree.parse('example.txt', parser)
tree.write('aaaaaaaaaaaaaaaaa.html')
пример.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>
Мне уже известен похожий предыдущий вопрос, но я не смог решить проблему без указания выходная кодировка или использование 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(<file>,encoding="utf-8")
? - person Katriel   schedule 23.09.2010lxml
использует кодировку, указанную в первой строке файла (если отсутствует, то используетascii
). Указать в программе я не мог, но когда дописал строку в начале файла с нужной кодировкой, все заработало. Кстати, я использовал недопустимый html, чтобы обозначить, что я должен использовать lxml, а не другую библиотеку. - person Dimitris Leventeas   schedule 23.09.2010