파이썬의 UTF-8 인코딩 (codecs
패키지)은 유니 코드 문자 28, 29 및 30을 줄 끝으로 해석합니다. 왜? 어떻게 그렇게하지 못하게 할 수 있습니까?파이썬 코덱 줄 끝
예제 코드 : 여기
with open('unicodetest.txt', 'w') as f:
f.write('a'+chr(28)+'b'+chr(29)+'c'+chr(30)+'d'+chr(31)+'e')
with open('unicodetest.txt', 'r') as f:
for i,l in enumerate(f):
print i, l
# prints "0 abcde" with special characters in between.
요점은 내가 할 것으로 기대대로 한 줄로을 읽는 것입니다. 이제 codecs
을 사용하여 UTF-8로 읽을 때, 그것을 여러 줄로 해석합니다.
import codecs
with codecs.open('unicodetest.txt', 'r', 'UTF-8') as f:
for i,l in enumerate(f):
print i, l
# 0 a
# 1 b
# 2 c
# 3 de
# (again with the special characters after each a, b, c, d
문자 28-31은 "정보 분리 기호 4"- "1"(이 순서대로)로 설명됩니다. 두 가지가 나에게 충격을 준다. 1) 28 ~ 30은 줄 끝으로 해석되고, 2) 31은 그렇지 않다. 이것은 의도 된 행동입니까? 어떤 문자가 줄 끝으로 해석되는 정의는 어디에서 찾을 수 있습니까? 라인 끝으로 해석하지 않는 방법이 있습니까?
감사합니다.
편집codecs.open
에 'UTF-8'인수를 복사하는 것을 잊었습니다. 내 질문에 코드가 수정되었습니다.
파일을 'rb'모드로 열면 어떻게됩니까? – unutbu
차이가 없습니다. – Paul
@Paul, 자신 만의 질문에 대답 할 수 있으며 원하는 경우 동의 할 수 있습니다. –