3
파이썬 2.7.12를 사용하고 있습니다. 이 코드 스 니펫으로 utf-8 csv 파일을 저장합니다. 나는 파일의 시작 부분에 BOM을 썼다. 나는 이것이 그들이 보게 어떻게 행 키를 인쇄 할 경우 KeyError: 'a'
: [u'\ufeffa', u'b']
을 위의 코드는 실패 할 것입니다파이썬 읽기 첫 번째 키에 포함 된 CSV - BOM
import codecs
import csv
inputFile = open("test.csv", "rb")
reader = csv.DictReader(inputFile, delimiter=";")
for row in reader:
print row["a"]
inputFile.close()
:
import codecs
import csv
outputFile = open("test.csv", "wb")
outputFile.write(codecs.BOM_UTF8)
fieldnames = ["a", "b"]
writer = csv.DictWriter(outputFile, fieldnames, delimiter=";")
writer.writeheader()
row = dict([])
for i in range(10):
row["a"] = str(i).encode("utf-8")
row["b"] = str(i*2).encode("utf-8")
writer.writerow(row)
outputFile.close()
는 그 csv 파일을로드 할. BOM은 a
키에 임베드되었습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
대단히 감사합니다. 그것은 잘 작동했습니다! :) –
실은, 나는 단지 당신의 대답이 특수 문자 (à, è, ì, ...)가 없을 때만 좋은 것을 발견했다. 그렇지 않으면 UnicodeEncodeError를 얻을 것이다. 답변을 향상시킬 수 있는지 알고 계십니까? –
오 예. 그것은 다른 문제입니다. csv.Reader는 UTF-8에 대해 몰라 [https://docs.python.org/2/library/csv.html#csv-examples](https://docs.python.org/2/library/csv) inputfile에있는 l에 대해 (l.encode ('utf-8'), 구분 기호 = ";")'당신이 속임수를 써야합니다 : 입력 파일을 바꿉니다. (예 : .html # csv-examples)'reader = csv.DictReader 생성자 das가 인코딩을 수행합니다. – hvwaldow