Создание json-файла из xml-файла в python с помощью xmltodict

Я пытаюсь создать JSON-файл из входного XML-файла, используя xmltodict со следующим кодом

import io, xmltodict, json
infile = io.open(filename_xml, 'r')
outfile = io.open(filename_json, 'w')
o = xmltodict.parse( infile.read() )
json.dump( o , outfile )

последняя строка дает мне следующую ошибку

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 182, in dump
    fp.write(chunk)
TypeError: must be unicode, not str

Я думаю, мне нужно изменить кодировку. Мой первоначальный XML-файл выглядит как ASCII. Есть идеи, как заставить это работать? Спасибо

2 ответа

Решение

Вы можете открыть файл в двоичном режиме

outfile = io.open(filename_json, 'wb')

Это позволит str также.

unicode а также str два различных типа объектов в Python до версии 3. Вы можете превратить свое значение в unicode объект (который в основном также является строкой) путем приведения его:

my_var = unicode(my_str)
Другие вопросы по тегам