상세 컨텐츠

본문 제목

파이썬에서 한글이 분리되어서 출력되는 경우 해결 방법

머신러닝/함수, 라이브러리

by byoelcardi 2023. 7. 11. 22:03

본문

python에서 인코딩을 제대로 했지만 다음과 같이 한글이 깨지는 경우가 있습니다. 예를 들면 다음과 같습니다.

출력되어야 하는 문장 => "사과는 맛있다"

나오는 문장 =>"ㅅㅏㄱㅗㅏㄴㅡㄴ ㅁㅏㅅㅇㅣㅆㄷㅏ"

이런 오류의 해결 방법 중 하나는 변수 text에 저장된 문자열이 Unicode 정규화가 필요할 수 있습니다. 한글은 한자와는 다르게 '자음'과 '모음'으로 나누어져 있습니다. 즉, 하나의 글자를 여러 개의 문자로 표현할 수 있습니다. 예를 들어, '가'는 기본적으로 하나의 문자입니다. 하지만 Unicode에서는 'ㄱ'과 'ㅏ' 로 분리하여 표현할 수도 있습니다.

따라서, 한글의 자음과 모음이 분리되어 출력된다면, 이는 해당 문자열이 정규화되지 않았을 가능성이 있습니다. 파이썬에서는 unicodedata 모듈의 normalize 함수를 사용하여 문제를 해결할 있습니다.

다음은 관련된 코드입니다.

import unicodedata

text = "사과는 맛있다"  # '사'를 'ㅅ'과 'ㅏ'로 분리한 상태
print(a)  # 분리된 상태로 출력될 수 있음

a_normalized = unicodedata.normalize('NFC', a)  # 'NFC'는 정규화 형식을 의미
print(a_normalized)  # '가'로 정상적으로 출력됨

위의 코드에서 'NFC' Unicode 정규화 형식 하나로, 'Canonical Composition' 의미합니다. 이는 분리된 문자를 가능한 하나의 단일 문자로 조합하는 방식입니다. 다른 정규화 형식으로는 'NFD' ('Canonical Decomposition'), 'NFKC' ('Compatibility Composition'), 'NFKD' ('Compatibility Decomposition') 등이 있습니다.

관련글 더보기