Python

unicodedata — 유니코드 데이터베이스


이 모듈은 모든 유니코드 문자의 특성을 정의하는 Unicode Character Database (UCD)에 접근할 수 있게 해줍니다. 이 데이터베이스에 포함된 데이터는 UCD 버전 17.0.0 를 기반으로 컴파일되었습니다.

이 모듈은 유니코드 표준 부록 #44인 “Unicode Character Database” 에서 정의된 것과 동일한 이름과 기호를 사용합니다.

더 보기

유니코드 및 이 모듈의 사용 방법에 대한 자세한 정보는 유니코드 HOWTO 를 참조하십시오.

조회

lookup(name)

이름으로 문자 조회

name(chr)

문자에 할당된 이름을 반환합니다.

숫자 값

decimal(chr)

문자의 십진수 값

digit(chr)

문자의 디짓 값

numeric(chr)

문자의 숫자 값

속성

bidirectional(chr)

문자의 양방향 클래스

block(chr)

문자의 유니코드 블록

category(chr)

문자의 일반 카테고리

combining(chr)

문자의 정준 결합 클래스

decomposition(chr)

문자 분해 매핑

east_asian_width(chr)

문자의 동아시아 폭

extended_pictographic(chr)

문자가 Extended_Pictographic 속성을 가졌는지 확인합니다.

grapheme_cluster_break(chr)

문자의 Grapheme_Cluster_Break 속성

indic_conjunct_break(chr)

문자의 Indic_Conjunct_Break 속성

isxidcontinue(chr)

문자가 유효한 식별자 연속 문자체인지 확인합니다.

isxidstart(chr)

문자가 유효한 식별자 시작 문자인지 확인합니다.

mirrored(chr)

문자의 Mirrored 속성

정규화

normalize(form, unistr)

문자열의 정규화된 형태를 반환합니다.

is_normalized(form, unistr)

유니코드 문자열이 정규화되었는지 확인합니다.

텍스트 분할

iter_graphemes(unistr)

문자열 내의 자소 문자군(grapheme cluster)을 순회합니다.

unicodedata.lookup(name, /)

이름으로 문자를 조회합니다. 해당 이름을 가진 문자가 발견되면 그에 상응하는 문자를 반환하고, 찾지 못할 경우 KeyError 를 발생시킵니다. 예:

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

이 함수가 반환하는 문자는 문자열 리터럴에서 \N 이스케이프 시퀀스로 생성된 것과 동일합니다. 예:

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

버전 3.3에서 변경: 이름 별칭 [1] 과 명명된 시퀀스 [2] 가 추가되었습니다.

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 문자에 할당된 숫자 값을 부동 소수점으로 반환합니다. 해당 값이 정의되지 않으면 default 를 반환하고, 제공되지 않으면 ValueError 를 발생시킵니다:

>>> unicodedata.numeric('½')
0.5
unicodedata.category(chr, /)

chr 문자에 할당된 일반 카테고리를 문자열로 반환합니다. 일반 카테고리 이름은 두 개의 문자로 구성됩니다. 카테고리 코드 목록은 유니코드 문자 데이터베이스 문서의 일반 카테고리 값 섹션 을 참조하십시오. 예:

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

chr 문자에 할당된 양방향 클래스를 문자열로 반환합니다. 해당 값이 정의되어 있지 않으면 빈 문자열을 반환합니다. 양방향 코드 목록은 유니코드 문자 데이터베이스의 양방향 클래스 값 섹션 문서를 참조하십시오. 예:

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

chr 문자에 할당된 정준 결합 클래스를 정수로 반환합니다. 결합 클래스가 정의되지 않은 경우 0 을 반환합니다. 자세한 내용은 유니코드 문자 데이터베이스의 정준 결합 클래스 값 섹션 를 참조하십시오.

unicodedata.east_asian_width(chr, /)

chr 문자에 할당된 동아시아 폭을 문자열로 반환합니다. 폭의 목록이나 더 자세한 정보는 유니코드 표준 부록 #11 를 참조하십시오.

unicodedata.block(chr, /)

chr 문자에 할당된 블록 를 반환합니다. 예:

>>> unicodedata.block('S')
'Basic Latin'

Added in version 3.15.

unicodedata.mirrored(chr, /)

chr 문자에 할당된 Mirrored 속성을 정수로 반환합니다. 해당 문자가 양방향 텍스트에서

>>> unicodedata.mirrored('>')
1
unicodedata.isxidstart(chr, /)

chr유니코드 표준 부록 #31 에 따른 유효한 식별자 시작 문자인지(즉, XID_Start 속성을 가졌는지) 확인하여 True 이면 이를 반환합니다. 그렇지 않으면 False 를 반환합니다. 예:

>>> unicodedata.isxidstart('S')
True
>>> unicodedata.isxidstart('0')
False

Added in version 3.15.

unicodedata.isxidcontinue(chr, /)

chr유니코드 표준 부록 #31 에 따른 유효한 식별자 문자(즉, XID_Continue 속성을 가졌는지) 확인하여 True 이면 이를 반환합니다. 그렇지 않으면 False 를 반환합니다. 예:

>>> unicodedata.isxidcontinue('S')
True
>>> unicodedata.isxidcontinue(' ')
False

Added in version 3.15.

unicodedata.decomposition(chr, /)

chr 문자에 할당된 문자 분해 매핑을 문자열로 반환합니다. 해당 매핑이 정의되지 않은 경우 빈 문자열을 반환합니다. 예:

>>> unicodedata.decomposition('Ã')
'0041 0303'
unicodedata.grapheme_cluster_break(chr, /)

문자에 할당된 Grapheme_Cluster_Break 속성을 반환합니다.

Added in version 3.15.

unicodedata.indic_conjunct_break(chr, /)

문자에 할당된 Indic_Conjunct_Break 속성을 반환합니다.

Added in version 3.15.

unicodedata.extended_pictographic(chr, /)

문자가 Extended_Pictographic 속성을 가졌으면 True 를, 그렇지 않으면 False 를 반환합니다.

Added in version 3.15.

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)는 먼저 정준 분해를 적용한 다음, 미리 결합한 문자로 다시 조합합니다.

이 두 가지 형태 외에도 호환성 동등성(compatibility equivalence)을 기반으로 한 두 개의 추가적인 정규화 형식이 있습니다. 유니코드에서는 일반적으로 다른 문자와 통합될 수 있는 특정 문자들이 지원됩니다. 예를 들어, U+2160 (ROMAN NUMERAL ONE)은 사실 U+0049 (LATIN CAPITAL LETTER I)와 동일한 것입니다. 그러나 기존 문자 집합(예: gb2312)과의 호환성을 위해 유니코드에서 이를 지원합니다.

정규화 형식 KD(NFKD)는 호환성 분해를 적용하여 모든 호환성 문자를 그에 상응하는 것으로 교체합니다. 정규화 형식 KC(NFKC)는 먼저 호환성 분해를 적용한 후, 정준 결합을 수행합니다.

두 개의 유니코드 문자열이 정규화되고, 사람이 보기에 같아 보여도, 하나가 결합한 문자를 갖고 다른 것은 그렇지 않으면, 같다고 비교되지 않을 수 있습니다.

unicodedata.is_normalized(form, unistr, /)

유니코드 문자열 unistr이 정규화 형식 form인지를 반환합니다. form의 유효한 값은 ‘NFC’, ‘NFKC’, ‘NFD’ 및 ‘NFKD’ 입니다.

Added in version 3.8.

unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)

자소 문자군(grapheme cluster)을 순회하는 반복자를 반환합니다. 선택적 인자인 start 가 있으면 해당 위치에서부터, end 가 있으면 해당 위치에서 멈추며 반복이 시작됩니다.

출력된 항목을 문자열로 변환하면 해당 자소 문자군에 대응하는 부분 문자열을 반환합니다. 그 속성의 startend 는 각각 자소 문자군의 시작과 끝을 나타냅니다.

이 기능은 유니코드 표준 부록 #29인 “Unicode Text Segmentation” 에 정의된 확장 자소 문자군 규칙을 사용합니다.

Added in version 3.15.

또한, 이 모듈은 다음과 같은 상수를 제공합니다:

unicodedata.unidata_version

이 모듈에 사용된 유니코드 데이터베이스의 버전.

unicodedata.ucd_3_2_0

이것은 전체 모듈의 대부분 메서드를 가지고 있지만, 유니코드 데이터베이스 특정 버전(예: IDNA)을 요구하는 애플리케이션을 위해 대신 유니코드 데이터베이스 버전 3.2를 사용하는 객체입니다.

각주

분실물 보관소