unicodedata — 유니코드 데이터베이스¶
이 모듈은 모든 유니코드 문자에 대한 문자 속성을 정의하는 유니코드 문자 데이터베이스(UCD – Unicode Character Database)에 대한 액세스를 제공합니다. 이 데이터베이스에 포함된 데이터는 UCD 버전 11.0.0으로 컴파일됩니다.
The module uses the same names and symbols as defined by Unicode Standard Annex #44, “Unicode Character Database”. It defines the following functions:
- 
unicodedata.lookup(name)¶
- 이름으로 문자를 조회합니다. 지정된 이름의 문자가 발견되면, 대응하는 문자를 돌려줍니다. 발견되지 않으면, - KeyError가 발생합니다.
- 
unicodedata.name(chr[, default])¶
- chr 문자에 할당된 이름을 문자열로 반환합니다. 이름이 정의되지 않으면, default가 반환되거나, 지정되지 않으면 - ValueError가 발생합니다.
- 
unicodedata.decimal(chr[, default])¶
- chr 문자에 할당된 10진수 값을 정수로 반환합니다. 그러한 값이 정의되어 있지 않으면 default가 반환되거나, 지정되지 않으면 - ValueError가 발생합니다.
- 
unicodedata.digit(chr[, default])¶
- chr 문자에 할당된 숫자(digit) 값을 정수로 반환합니다. 그러한 값이 정의되어 있지 않으면 default가 반환되거나, 지정되지 않으면 - ValueError가 발생합니다.
- 
unicodedata.numeric(chr[, default])¶
- chr 문자에 할당된 수치(numeric value)를 float로 반환합니다. 그러한 값이 정의되어 있지 않으면 default가 반환되거나, 지정되지 않으면 - ValueError가 발생합니다.
- 
unicodedata.category(chr)¶
- chr 문자에 할당된 일반 범주(general category)를 문자열로 반환합니다. 
- 
unicodedata.bidirectional(chr)¶
- chr 문자에 할당된 양방향 클래스(bidirectional class)를 문자열로 반환합니다. 그러한 값이 정의되어 있지 않으면, 빈 문자열이 반환됩니다. 
- 
unicodedata.combining(chr)¶
- chr 문자에 할당된 정준 결합 클래스(canonical combining class)를 정수로 반환합니다. 결합 클래스가 정의되지 않으면 - 0을 반환합니다.
- 
unicodedata.east_asian_width(chr)¶
- 문자 chr에 할당된 동아시아 폭(east asian width)을 문자열로 반환합니다. 
- 
unicodedata.mirrored(chr)¶
- 문자 chr에 할당된 거울상 속성(mirrored property)을 정수로 반환합니다. 문자가 양방향 텍스트에서 “거울상” 문자로 식별되면 - 1을 반환하고, 그렇지 않으면- 0을 반환합니다.
- 
unicodedata.decomposition(chr)¶
- 문자 chr에 할당된 문자 분해 매핑(character decomposition mapping)을 문자열로 반환합니다. 그러한 매핑이 정의되어 있지 않으면 빈 문자열이 반환됩니다. 
- 
unicodedata.normalize(form, unistr)¶
- 유니코드 문자열 unistr에 대한 정규화 형식(normal form) form을 반환합니다. form의 유효한 값은 ‘NFC’, ‘NFKC’, ‘NFD’ 및 ‘NFKD’ 입니다. - 유니코드 표준은 정준 동등성(canonical equivalence) 및 호환 동등성(compatibility equivalence)의 정의를 기반으로, 유니코드 문자열의 다양한 정규화 형식을 정의합니다. 유니코드에서, 여러 문자를 다양한 방법으로 표현할 수 있습니다. 예를 들어, U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) 은 시퀀스 U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA) 로도 표현할 수 있습니다. - 각 문자에는, 두 개의 정규화 형식이 있습니다: 정규화 형식 C와 정규화 형식 D. 정규화 형식 D(NFD)는 정준 분해라고도 하며, 각 문자를 분해된 형식으로 변환합니다. 정규화 형식 C(NFC)는 먼저 정준 분해를 적용한 다음, 미리 결합한 문자로 다시 조합합니다. - 이 두 형식 외에도, 호환 등가성을 기반으로 하는 두 가지 추가 정규화 형식이 있습니다. 유니코드에서는, 일반적으로 다른 문자와 통합되는 특정 문자가 지원됩니다. 예를 들어, U+2160 (ROMAN NUMERAL ONE) 은 U+0049 (LATIN CAPITAL LETTER I) 과 실제로 같습니다. 하지만, 기존 문자 집합(예를 들어, gb2312)과의 호환성을 위해 유니코드에서 지원됩니다. - 정규화 형식 KD(NFKD)는 호환 분해를 적용합니다. 즉, 모든 호환 문자를 동등한 것으로 치환합니다. 정규화 형식 KC(NFKC)는 먼저 호환 분해를 적용한 다음, 정준 결합을 적용합니다. - 두 개의 유니코드 문자열이 정규화되고, 사람이 보기에 같아 보여도, 하나가 결합한 문자를 갖고 다른 것은 그렇지 않으면, 같다고 비교되지 않을 수 있습니다. 
또한, 이 모듈은 다음 상수를 노출합니다:
- 
unicodedata.unidata_version¶
- 이 모듈에 사용된 유니코드 데이터베이스의 버전. 
- 
unicodedata.ucd_3_2_0¶
- 이것은 전체 모듈과 같은 메서드를 가지고 있는 객체이지만, 유니코드 데이터베이스 버전 3.2를 대신 사용합니다. 이 특정 버전의 유니코드 데이터베이스가 필요한 응용 프로그램(가령 IDNA)을 위한 것입니다. 
예제:
>>> import unicodedata
>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'
>>> unicodedata.name('/')
'SOLIDUS'
>>> unicodedata.decimal('9')
9
>>> unicodedata.decimal('a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not a decimal
>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'
>>> unicodedata.bidirectional('\u0660') # 'A'rabic, 'N'umber
'AN'
각주
