UTF-8로 인코딩 된 비 ASCII 문자로 CSV 파일을 처리하는 Python 스크립트를 작성했습니다. 그러나 출력의 인코딩이 깨졌습니다. 따라서, 입력이에서 :파이썬 인코딩 변환
"d\xc4\x9bjin hornictv\xc3\xad"
I 출력이 얻을 :
"d\xe2\x99\xafjin hornictv\xc2\xa9\xc6\xaf"
을 사용하면 인코딩 오류가 어디에서 올 수도 제안 할 수 있습니다? 이전에 비슷한 행동을 보았습니까?
편집 : 나는 docs에 등장하는 UnicodeWriter
클래스의 표준 라이브러리 인 csv
을 사용하고 있습니다. Python 버전 2.6.6을 사용합니다.
EDIT 2 코드가 동작 재현 :
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import csv
from pymarc import MARCReader # The pymarc package available PyPI: http://pypi.python.org/pypi/pymarc/2.71
from UnicodeWriter import UnicodeWriter # The UnicodeWriter from: http://docs.python.org/library/csv.html
def getRow(tag, record):
if record[tag].is_control_field():
row = [tag, record[tag].value()]
else:
row = [tag] + record[tag].subfields
return row
inputFile = open("input.mrc", "r")
outputFile = open("output.csv", "wb")
reader = MARCReader(inputFile, to_unicode = True)
writer = UnicodeWriter(outputFile, delimiter = ",", quoting = csv.QUOTE_MINIMAL)
for record in reader:
if bool(record["001"]):
tags = [field.tag for field in record.get_fields()]
tags.sort()
for tag in tags:
writer.writerow(getRow(tag, record))
inputFile.close()
outputFile.close()
입력 데이터 available here (큰 파일)이다.
그건 그렇고, 내장 csv 모듈을 사용해 보셨습니까? http://docs.python.org/library/csv.html – sinelaw
Python 버전이란 무엇입니까? – Skurmedel
예, 저는'csv' 표준 라이브러리를 사용하고 있습니다. 그리고 http://docs.python.org/library/csv.html에서 사용 가능한'UnicodeWriter' 클래스를 시도해 보았습니다. –