2013-09-29 5 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 документации модуля. Там он указывает (ниже 6-го образца кода):

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.

На конец страницы есть готовая к использованию реализация.

Смежные вопросы