을 인용 내가 기대하는이 코드는 무엇을 :파이썬 3 csv.writer 접두사 인쇄 "바이트"와 파이썬 2에서
import csv
import sys
writer = csv.writer(sys.stdout)
writer.writerow([u'hello', b'world'])
그것은 인쇄 :
hello,world
을하지만 파이썬 3에서, bytes
는 접두사로 인쇄 인용됩니다
hello,b'world'
CSV는 일반 데이터 교환 형식이며, 다른 어떤 시스템 이후부터 파이썬은 무엇보다 b''
이 무엇인지 알고 있기 때문에이 동작을 비활성화해야합니다. 그러나 나는 방법을 알아 내지 못했다.
처음에는 모든 bytes
에 str.decode
을 사용할 수 있지만 불편하고 비효율적입니다. 정말 원하는 것은 리터럴 바이트를 파일에 쓰거나 인코딩 (예 : 'ascii')을 csv.writer()
으로 전달하여 어떤 bytes
객체를 디코딩하는 방법을 알고 있기 때문입니다.
바이트 문자열과 유니 코드 문자열은 파이썬 2에서도 두 가지 유형이 있습니다. 파이썬 2는 기본 'ascii'코덱을 사용하여 암시 적 변환을 허용합니다. –
@Mark : 감사합니다 ... 그에 따라 업데이트 된 답변. – martineau