【问题标题】:UnicodeEncodeError when writing CSV file [duplicate]写入 CSV 文件时出现 UnicodeEncodeError [重复]
【发布时间】:2016-12-21 23:56:50
【问题描述】:

我正在使用以下脚本将我的 XML 产品转换为 CSV

#!/usr/bin/python

from xml.etree import ElementTree as ET
import csv

tree = ET.parse('ItemCatDesc2.xml')
root = tree.getroot()


columns = ['Name'] + [value.attrib.get('AttributeID') for value in tree.findall('.//Product//Value')]

with open('ItemCatDesc2.csv', 'w') as ofile:
    ofile = csv.DictWriter(ofile, set(columns))
    ofile.writeheader()
    for product in tree.findall('.//Product'):
        d = {value.attrib.get('AttributeID') : value.text
             for value in product.findall('.//Values/Value')}
        d['Name'] = product.findtext('Name')
        print d
        ofile.writerow(d)

当我运行脚本时:

python convert.py ItemCatDesc2.xml > ItemCatDesc2.csv

我收到以下错误:

Traceback (most recent call last):
  File "convert.py", line 21, in <module>
    ofile.writerow(d)
  File "/usr/lib/python2.7/csv.py", line 152, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xbd' in position 362: ordinal not in range(128)

我要转换的 XML 是

<?xml version="1.0" encoding="UTF-8" ?>

【问题讨论】:

    标签: python xml python-2.7 csv


    【解决方案1】:

    试试这个:

    # -*- coding: utf-8 -*-
    

    【讨论】:

    • 是的,我已经尝试过了,同样的结果。 UnicodeEncodeError:“ascii”编解码器无法在位置 362 编码字符 u'\xbd':序数不在范围内(128)
    • # -*- coding: 仅在源代码包含非ascii时使用,这里不是这样
    猜你喜欢
    • 2014-09-26
    • 2011-10-19
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多