2013-09-29 72 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.

在頁面的末尾有一個準備好使用的實現。

相關問題