Я знаю, что ОП спрашивал о разборе строк, но у меня было то же исключение при записи модели DOM в файл через Document.writexml (...).Если люди с этой (связанной) проблемой приземляются здесь, я предложу свое решение.
Мой код, который вызывал UnicodeEncodeError, выглядел так:
with tempfile.NamedTemporaryFile(delete=False) as fh:
dom.writexml(fh, encoding="utf-8")
Обратите внимание, что "Параметр «кодирование» влияет только на заголовок XML и не влияет на обработку данных.Чтобы исправить это, я изменил его на:
with tempfile.NamedTemporaryFile(delete=False) as fh:
fh = codecs.lookup("utf-8")[3](fh)
dom.writexml(fh, encoding="utf-8")
Это обернет дескриптор файла экземпляром encodings.utf_8.StreamWriter , который обрабатывает данные как UTF-8, а не ASCII, и ошибка UnicodeEncodeError исчезла.Я понял эту идею, прочитав источник xml.dom.minidom.Node.toprettyxml (...) .