TODAY's GOAL
파이썬(jupyter notebook)으로 한글이 포함된 파일을 불러올 때 꿻 땗 뻅... 등으로 깨지게 읽히거나,
이것저것 전처리한 파일을 csv로 저장할 때는 잘 저장되지만 엑셀로 저장하면 ㅇㅔㄱㅅㅔㄹ.. 등으로 깨지게 저장되는 경우가 종종 있습니다.
이러한 현상을 해결하기 위한 방법이 몇가지 있는데,
그 중 가장 기본적인 방법과 이번에 새로 알게된 방법에 대해서 아래 정리하고자 합니다.
1. encoding 설정해주기
한글이 포함된 파일을 불러오거나 저장할 때 가장 기본적으로 사용하는 방법입니다. jupyter notebook으로 작업하는 경우, pd.read_csv(encoding='utf-8') / pd.read_excel(encoding='utf-8') 혹은 pd.read_csv(encoding='cpc949') / pd.read_excel(encoding='cpc949') 라고 인코딩을 지정해주면 대부분의 경우 해결됩니다. 위 코드와 같이 read 하는 경우 뿐만 아니라 저장하는 경우에도 마찬가지로 (encoding='utf-8') 을 덧붙여주면 됩니다.
jupyter notebook으로 작업하는 경우가 아니라 vscode와 같은 .py 파일에서 작업하는 경우, 파일의 최상단에 #-*- encoding: utf-8 -*- 을 삽입해주면 전체 파일을 encoding 할 때 utf-8로 하겠다는 선언이 되어 해당 방법도 사용이 가능합니다.
2. unicodedata 사용하기
unicodedata란 모든 유니코드 문자에 대한 문자속성을 정의하는 유니코드 문자 데이터베이스에 관한 액세스를 제공합니다. (https://docs.python.org/ko/3/library/unicodedata.html 참조) 이를 이용하여 한글 깨짐 현상을 해결하는 방법은 다음과 같습니다.
1. pip install unicodedata
2. import unicodedata
3. map(lambda x: unicodedata.normalize('NFC', x)
아래 예시 화면을 보시면 본인의 경우 df의 title 컬럼에서 한글 깨짐 현상이 일어나서, df["title"]을 지정하여 df["title"] = df["title"].map(lambda x: unicodedata.normalize('NFC', x)) 이라고 설정해주었습니다. 주피터 노트북 상에서 시각적으로는 아무런 변화가 없는 것으로 보이나, 실제 해당 파일을 다시 엑셀로 저장 시 utf-8이나 cpc949로 해결되지 않던 깨짐 현상이 해결되었습니다.
한글 깨짐 해결 방법에 대한 포스팅은 여기까지 입니다. 다음 포스팅에서도 여러가지 데이터 전처리 방법에 대해 다뤄보겠습니다.
'[근무일지] LV_intern' 카테고리의 다른 글
[Slack봇(슬랙봇) 만들기] Incoming Webhooks 이용_2021.09.09 (0) | 2021.09.13 |
---|---|
[디스코드 알림봇 만들기 2] discord.py 이용_2021.09.07. (1) | 2021.09.10 |
[디스코드 알림봇 만들기 1] aws의 lambda 함수 이용 _2021.09.07. (0) | 2021.09.10 |