2013-09-29 6 views
0

I를 CSV의 열을 읽을 수있는 다음과 같은 코드가 있습니다itertools.islice는 UnicodeEncodeError를 트리거 : '아스키'코덱이 문자 에러 인코딩 할 수

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

페이지의 마지막에는 즉시 사용할 수있는 구현이 있습니다.