2020년 9월 23일 수요일

Chardet 문자열 판단하는 패키지

 python을 사용하다보면, 문자열로 고생하는 경우들이 있다. 

 

주로 UTF-8과 cp949 , 하나는 리눅스에서 사용하는 한글이고, 하나는 windows에서 사용하는 한글 포맷인데, 

예를 들면 아래와 같이 사용할 경우 

 

with open('filename.txt','r', encoding='utf-8') as f:
  _s = f.read()

 

위와 같이 사용하는 경우 실제 파일이 cp949인 형태 (또는 반대) 의 경우 Fail을 내면서 

죽어버리는 경우가 있다. 

 

그래서 이때 사용하기 위한 solution이 chardet 패키지 이다. 

이것은 미리 문자열 셋을 판단해주는 패키지 이다. 

 

위의 코드를 아래와 같이 할 경우, utf-8이던 cp949이던 상관없이 read가 가능하게 된다. 

import chardet

rawdata = open(file, "r").read()
result = chardet.detect(rawdata)
charenc = result['encoding']

#with open('filename.txt','r', encoding='utf-8') as f:
with open('filename.txt','r', encoding=charend) as f:
  _s = f.read()