Study/Programming

[파이썬 Python] 파일 읽을 때 feff 문제

빨간당무 2017. 10. 11. 07:18

인코딩 타입이 유니코드(unicode) 또는 UTF-8인 문서를 읽을 때 파일의 처음에 \ufeff 가 추가되는데,

파이썬에서 아래와 같이 파일을 읽어 출력하는 경우 

import csv
with open('example.txt', 'r', encoding='utf-8') as file:
    pass

\ufeff문서의시작

과 같이 \ufeff 추가되는 걸 볼 수 있다. 

물론 text로 모두 읽어 들인 후 .replace('\ufeff', '') 해서 바꿔도 상관 없으나, 

csv 파일을 DictReader로 읽어 들여서 OrderedDict으로 하는 경우,

첫 번째 컬럼의 head에 \ufeff 문자열이 바로 붙어 버리는 곤란한 경우가 발생한다. 

예를 들면 이런 식이다. 

OrderedDict([('\ufeff식별자', '1_00001') ...

따라서 예초에 파일을 읽어들일 때 제거하면 편하다. 

import csv
with open('example.txt', 'r', encoding='utf-8-sig') as file:
    pass

encoding 옵션을 utf-8 에서 utf-8-sig 로 바꾸면 된다.