colab에서 진행하다보면 한글로 된 사람의 이름으로 딕셔너리에 접근하거나, 시각화에 한글을 사용하고 싶을 때가 있는데요.
그 두 과정에서 에러를 고치는 방법을 공유드립니다.
나눔 고딕 폰트 설치 후, 커널 재시작하면 폰트를 사용할 수 있게 됩니다.
!sudo apt-get install -y fonts-nanum
!sudo fc-cache -fv
!rm ~/.cache/matplotlib -rf
위의 코드를 colab에서 실행하면, 다음과 같은 결과가 나옵니다. 이후 커널 다시 시작을 꼭 해주셔야 합니다.
다시 시작 후 다음 셀에 plt.rc('font', family='NanumBarunGothic')
를 실행하면 문제가 해결됩니다.
딕셔너리의 key를 출력해보면 한글로 되어 있음에도 불구하고,
some_dict['한글 키']
에 접근하려고 하면 KeyError
를 받게 되는 일이 발생하는 원인은 한글 파일을 다루는 방식이 NFC와 NFD로 두 가지가 있는데 이와 관련된 문제라고 합니다.
디렉토리에 있는 모든 파일을 가져오는 경우를 예시로 설명 드리겠습니다.
os.listdir()
을 사용하여 파일을 가져오게 되면 해당 문제가 발생하므로, 가져온 파일을 NFC 방식으로 변환해 주어야 합니다. 따라서 아래와 같은 함수를 정의하여 사용합니다.
colab에서 from unicodedata import normalize
로 normalize를 가져 온 후,
def list_files(dir_path):
nfd_file_list = os.listdir(dir_path)
file_list = []
for nfd_file in nfd_file_list:
file = normalize("NFC", nfd_file)
file_list.append(file)
return file_list
새로 정의한 list_files()
로 파일을 불러오게 되면, 문제가 해결됩니다.