텍스트 파일을 읽어오던 중 아래 에러가 났다.
SyntaxError: invalid character in identifier
파일 내용을 찍어보니 '\ufeff' 가 포함되어 있었다.
\ufeff 는 문서의 맨 앞에 추가되어 현재 파일의 인코딩 정보를 알려주는 역할을 한다.
이 부분을 BOM(Byte Order Mark) 이라고 한다.
텍스트를 읽는 프로그램은 이 BOM을 참고하여 이어지는 데이터를 어떤 방식으로 읽을지 결정하게 된다.
파일 open 시 encoding 방식 변경하기
BOM 인식 오류 문제를 해결하려면
파일을 읽을 때 'utf-8' → 'utf-8-sig' 로 encoding 옵션을 변경해주면 된다.
# 기존 (utf-8)
with open(file_path, 'r', encoding='utf-8') as f:
# 변경 후 (utf-8-sig)
with open(file_path, 'r', encoding='utf-8-sig') as f:
utf-8-sig 의 sig 는 'signature' 를 뜻하며,
이는 말 그대로 'utf-8 인코딩 파일 서명' 이다.
따라서 utf-8-sig 로 파일을 읽어들일 경우
파일 맨 앞의 BOM 을 정보(info)성 부분으로 인식하여 알아서 걸러준다.
300x250