Python XML编写UnicodeDecodeError

时间:2013-11-25 09:45:04

标签: python xml

我将XML写入文件时遇到问题。我将CSV文件转换为DICT,然后转换为XML文件。我有编码问题。

import xml.etree.ElementTree as ET
import csv

data = {}

with open('csv.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=';')
    for row in spamreader:

        data[row[2]] = {'category': row[0],
                     'ean': row[2],
                     }

katalog        = ET.Element('Katalog')

for item in data:
    ean_kod        = ET.SubElement(vyrobek,'EAN')
    ean_kod.text     = data[item]['ean']

if ET.ElementTree(katalog).write('testunicode.xml',encoding="UTF-8",xml_declaration=True):
    print "Ulozeno."

当我尝试将XML写入文件时,此错误会出现:

Traceback (most recent call last):
  File "/media/CORSAIR/TEST/Eshop/macenauer_complete.py", line 95, in <module>
    if ET.ElementTree(katalog).write('testunicode.xml',encoding="UTF-8",xml_declaration=True):
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 821, in write
    serialize(write, self._root, encoding, qnames, namespaces)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 940, in _serialize_xml
    _serialize_xml(write, e, encoding, qnames, None)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 940, in _serialize_xml
    _serialize_xml(write, e, encoding, qnames, None)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 938, in _serialize_xml
    write(_escape_cdata(text, encoding))
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1074, in _escape_cdata
    return text.encode(encoding, "xmlcharrefreplace")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)

1 个答案:

答案 0 :(得分:0)

尝试使用指定的编码打开csv文件

with open('csv.csv', 'r', encoding='UTF-8') as csvfile: