unicodedata — Unicode 데이터베이스

unicodedata — Unicode 데이터베이스

이 모듈은 모든 Unicode 문자에 대한 문자 속성(character properties)을 정의하는 Unicode Character Database (UCD)에 접근할 수 있게 해줘요. 이 데이터베이스에 포함된 데이터는 UCD 버전 16.0.0에서 컴파일되었어요.

이 모듈은 Unicode Standard Annex #44, "Unicode Character Database"에서 정의한 것과 같은 이름과 기호를 사용해요. 다음 함수들을 정의해요.

출처: Python documentation

본문

Unicode와 이 모듈 사용법에 대한 자세한 내용은 Unicode HOWTO도 참고하세요.

unicodedata.lookup(name)

이름으로 문자를 찾아요. 주어진 이름의 문자가 발견되면 해당 문자를, 발견되지 않으면 KeyError를 반환해요. 예:

>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'

이 함수가 반환하는 문자는 문자열 리터럴의 \N 이스케이프 시퀀스가 생성하는 문자와 같아요.

>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
True

버전 3.3에서 이름 별칭(name aliases)과 이름 붙은 시퀀스(named sequences) 지원이 추가되었어요.

unicodedata.name(chr, default=None, /)

문자 chr에 지정된 이름을 문자열로 반환해요. 이름이 정의되지 않으면 default를 반환하고, 주어지지 않으면 ValueError가 발생해요. 예:

>>> unicodedata.name('½')
'VULGAR FRACTION ONE HALF'
>>> unicodedata.name('\uFFFF', 'fallback')
'fallback'

unicodedata.decimal(chr, default=None, /)

문자 chr에 지정된 십진 값을 정수로 반환해요. 정의된 값이 없으면 default를, 주어지지 않으면 ValueError를 반환해요. 예:

>>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}')
9
>>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1)
-1

unicodedata.digit(chr, default=None, /)

문자 chr에 지정된 숫자 값을 정수로 반환해요. 정의된 값이 없으면 default를, 주어지지 않으면 ValueError를 반환해요:

>>> unicodedata.digit('\N{SUPERSCRIPT NINE}')
9

unicodedata.numeric(chr, default=None, /)

문자 chr에 지정된 숫자 값을 float로 반환해요. 정의된 값이 없으면 default를, 주어지지 않으면 ValueError를 반환해요:

>>> unicodedata.numeric('½')
0.5

unicodedata.category(chr)

문자 chr에 지정된 일반 범주(general category)를 문자열로 반환해요. 일반 범주 이름은 두 글자로 이루어져요. 범주 코드 목록은 Unicode Character Database 문서의 General Category Values 섹션을 참고하세요. 예:

>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'

unicodedata.bidirectional(chr)

문자 chr에 지정된 양방향(bidirectional) 클래스를 문자열로 반환해요. 정의된 값이 없으면 빈 문자열을 반환해요. 예:

>>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}')  # 'A'rabic, 'N'umber
'AN'

unicodedata.combining(chr)

문자 chr에 지정된 정규 결합 클래스(canonical combining class)를 정수로 반환해요. 결합 클래스가 정의되지 않으면 0을 반환해요.

unicodedata.east_asian_width(chr)

문자 chr에 지정된 동아시아 너비(east asian width)를 문자열로 반환해요. 너비 목록이나 자세한 내용은 Unicode Standard Annex #11을 참고하세요.

unicodedata.mirrored(chr)

문자 chr에 지정된 mirrored 속성을 정수로 반환해요. 양방향 텍스트에서 "mirrored" 문자로 식별되면 1을, 그렇지 않으면 0을 반환해요. 예:

>>> unicodedata.mirrored('>')
1

unicodedata.decomposition(chr)

문자 chr에 지정된 문자 분해 매핑을 문자열로 반환해요. 매핑이 정의되지 않으면 빈 문자열을 반환해요. 예:

>>> unicodedata.decomposition('Ã')
'0041 0303'

unicodedata.normalize(form, unistr)

Unicode 문자열 unistr의 정규 형식(normal form) form을 반환해요. form의 유효한 값은 'NFC', 'NFKC', 'NFD', 'NFKD'예요.

Unicode 표준은 정규 동등성(canonical equivalence)과 호환 동등성(compatibility equivalence)의 정의에 기반해 다양한 정규화 형식을 정의해요. Unicode에서는 여러 문자를 다양한 방식으로 표현할 수 있어요. 예를 들어 U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA)은 U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA) 시퀀스로도 표현할 수 있어요.

각 문자에는 정규 형식 C와 정규 형식 D 두 가지가 있어요. 정규 형식 D (NFD)는 정규 분해(canonical decomposition)라고도 하며, 각 문자를 분해된 형태로 변환해요. 정규 형식 C (NFC)는 먼저 정규 분해를 적용한 다음 미리 결합된 문자를 다시 합성해요.

이 두 형식 외에도 호환 동등성에 기반한 두 가지 추가 정규 형식이 있어요. Unicode에서는 보통 다른 문자와 통합되는 문자가 지원돼요. 예를 들어 U+2160 (ROMAN NUMERAL ONE)은 실제로 U+0049 (LATIN CAPITAL LETTER I)와 같은 것이에요. 다만 기존 문자 세트(예: gb2312)와의 호환을 위해 Unicode에서 지원돼요.

정규 형식 KD (NFKD)는 호환 분해를 적용하는데, 즉 모든 호환 문자를 그 동등물로 대체해요. 정규 형식 KC (NFKC)는 먼저 호환 분해를 적용한 다음 정규 합성을 적용해요.

두 Unicode 문자열이 정규화되었고 사람의 눈에는 같아 보여도, 하나는 결합 문자를 가지고 다른 하나는 가지지 않으면 서로 같지 않게 비교될 수 있어요.

unicodedata.is_normalized(form, unistr)

Unicode 문자열 unistr이 정규 형식 form에 있는지 여부를 반환해요. form의 유효한 값은 'NFC', 'NFKC', 'NFD', 'NFKD'예요. 버전 3.8에서 추가되었어요.

상수

  • unicodedata.unidata_version — 이 모듈에서 사용한 Unicode 데이터베이스의 버전
  • unicodedata.ucd_3_2_0 — 전체 모듈과 같은 메서드를 가진 객체지만, 이 특정 버전(IDNA 같은)을 요구하는 애플리케이션을 위해 Unicode 데이터베이스 버전 3.2를 대신 사용해요.

더 알아보기 (Learn more)