Итак, я получаю некоторые данные xml. Одним из таких примеров является следующее:Невозможно декодировать байт
xmlString = '<location>san diego, ça</location>'
В настоящее время это строка. Теперь мне нужно преобразовать его в объект XML, используя метод ElementTree, fromstring(). импорта выглядит следующим образом:
import xml.etree.ElementTree as ET
Вызов метод:
xml = ET.fromstring(xmlString)
я продолжал получать ошибки, говоря:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position xxx:
ordinal not in range(128)
Для того, чтобы справиться с этим я выглядел довольно немного над StackOverflow, а также с документами Python.
Представляется, что необходимо кодировать и декодировать строку.
xmlString = xmlString.encode('utf-8', 'ignore')
xmlString = xmlString.decode('ascii', 'ignore')
Ошибка игнорируется, но они по-прежнему возникают. Это делается до преобразования xmlString в объект xml. Но все же ошибка возникает!
Любые идеи?
Полный код:
xmlString = '<?xml version="1.0" encoding="UTF-8"?><o><location>san diego, ça</location>
</o>'
xmlString = xmlString.encode('utf-8', 'ignore')
xmlString = xmlString.decode('ascii', 'ignore')
xml = ET.fromstring(xmlString)
Использование Python 2.7
Да. Разделите код и трассировку. –
@ IgnacioVazquez-Abrams Я написал фрагмент, который можно использовать в командной строке – redrubia
Обычно, как ожидается, XML кодируется в кодировке UTF-8, 'fromstring()' ожидает, что вы передадите * байтовую строку * (не unicode). Попытка перекодировать UTF-8 как ASCII не будет работать. –