itertools.islice触发UnicodeEncodeError:'ascii'编解码器无法编码字符错误

时间:2013-09-29 08:02:19

标签: python utf-8

我有以下代码来读取csv中的列:

# ------------------------------------------------------------------------------
# READS CSV, RETURNS LIST OF COLUMN DATA, FROM ROW rowStart TO rowFinish
# ------------------------------------------------------------------------------
def csvColumnAsList(csvFileName, column, rowStart, rowFinish):
    column_list = [] # defines it as a list
    with codecs.open(csvFileName, 'r', 'utf-8') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',')
        for row in itertools.islice(spamreader, rowStart, rowFinish+1):
            column_list.append(row[column].decode('utf8'))
    return column_list

但这会触发错误:

File "algo-8.py", line 51, in csvColumnAsList
    for row in itertools.islice(spamreader, rowStart, rowFinish+1): UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in
position 215: ordinal not in range(128)

有人能帮助我吗? 我尝试了一些编码,解码的东西,但还是想不出来。

1 个答案:

答案 0 :(得分:1)

请参阅模块文档的Examples section。它指出(低于第6个代码示例):

  

csv模块不直接支持读写Unicode [...] [但]你可以编写处理编码和解码的函数或类,只要你避免像使用NUL的UTF-16这样的编码。建议使用UTF-8。

在页面末尾有一个现成的实现。

相关问题