2013-09-29 45 views
0

我有下面的代码在一个CSV阅读列:itertools.islice触发UnicodeEncodeError: 'ASCII' 编解码器不能编码字符错误

# ------------------------------------------------------------------------------ 
# 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

查看模块文档的Examples section。它在下面说明(在第六个代码示例之下):

The csv module doesn’t directly support reading and writing Unicode [...] [But] you can write functions or classes that handle the encoding and decoding for you as long as you avoid encodings like UTF-16 that use NULs. UTF-8 is recommended.

在页面的末尾有一个准备好使用的实现。

相关问题