Как правильно установить кодировку в модуле xml.etree?

Добрый день.

Подскажите, как разобраться с кодировкой при использовании модуля import xml.etree.ElementTree

Имеется файл в xml формате. С помощью модуля осуществляется парсинг и замена некоторых значений (цифры) и файл перезаписывается. После перезаписи в разделах где были изначально указаны символы кириллица, заменяются на РО"".

Как правильно указать кодировки во время сохранения xml после его парсинга и редактирования?
На данный момент часть кода выглядит так:

import xml.etree.ElementTree

et = xml.etree.ElementTree.parse('{0}'.format(xml_f))
et.find('.//level').text = '3{0}'.format(date_now) 
et.write('{0}'.format(xml_f), encoding="UTF-8", xml_declaration=True)

with open('{0}'.format(xml_f)) as xml_file:
        requests.post('http://{0}/xxxxxxxxxxxxxxxxxxxx'.format(ip),
                      auth=('{0}'.format(login), '{0}'.format(password)), data=xml_file, headers=headers)


выдает исключение
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 62-67: ordinal not in range(256)
  • Вопрос задан
  • 1526 просмотров
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
àÃÂ

это HTML-Entities, а не кодировка

используйте chardet для определения, но и так понятно что utf8 != latin-1

проще всего -считавать и записывать файл в binary формате, потом декодировать - кодировать
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Alexsem5
при записи файла указать кодировку:
например: tree.write('C:/ваш_путь/ваш_файл.xml', encoding="UTF-8")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы