>백엔드 개발 >파이썬 튜토리얼 >Python\의 `unicodedata.normalize()` 함수는 어떻게 유니코드 표현을 단순화합니까?

Python\의 `unicodedata.normalize()` 함수는 어떻게 유니코드 표현을 단순화합니까?

DDD
DDD원래의
2024-11-22 16:12:15301검색

How Does Python's `unicodedata.normalize()` Function Simplify Unicode Representations?

Python에서 유니코드 정규화: 유니코드 표현 단순화

Python에서 unicodedata 모듈은 유니코드 문자열 표현을 단순화하기 위해 .normalize() 함수를 제공합니다. . 이 함수는 분해된 유니코드 항목을 가장 간단한 복합 형식으로 변환합니다.

다음 예를 고려하십시오.

import unicodedata

char = "á"
print(len(char))  # Output: 1

[print(unicodedata.name(c)) for c in char]  # Output: ['LATIN SMALL LETTER A WITH ACUTE']

char = "á"
print(len(char))  # Output: 2

[print(unicodedata.name(c)) for c in char]  # Output: ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']

"á" 문자는 두 개의 코드 포인트로 구성됩니다: U 0061(LATIN SMALL LETTER A) 및 U 0301(급성 악센트 결합). 분해되면 이러한 문자는 "á"로 나타납니다.

이 문자열을 정규화하려면 .normalize('NFC')를 사용하면 다음과 같은 구성된 형식을 반환합니다.

print(ascii(unicodedata.normalize('NFC', '\u0061\u0301')))  # Output: '\xe1'

반대로 . Normalize('NFD')는 분해된 형식을 반환합니다.

print(ascii(unicodedata.normalize('NFD', '\u00E1')))  # Output: 'a\u0301'

호환성을 처리하기 위해 추가 정규화 형식이 존재합니다. 코드 포인트. NFKC 및 NFKD는 호환성 문자를 표준 형식으로 바꿉니다. 예를 들어 U 2160(ROMAN NUMERAL ONE)은 NFKC를 사용하여 "I"로 정규화됩니다.

print(unicodedata.normalize('NFKC', '\u2167'))  # Output: 'VIII'

일부 문자에는 고유한 분해 형식이 없을 수 있으므로 정규화가 항상 되돌릴 수 있는 것은 아니라는 점에 유의하는 것이 중요합니다.

위 내용은 Python\의 `unicodedata.normalize()` 함수는 어떻게 유니코드 표현을 단순화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.