unicodedata --- Cơ sở dữ liệu Unicode


Mô-đun này cung cấp quyền truy cập vào Cơ sở dữ liệu ký tự Unicode (UCD) xác định các thuộc tính ký tự cho tất cả các ký tự Unicode. Dữ liệu chứa trong cơ sở dữ liệu này được tổng hợp từ UCD version 16.0.0.

Mô-đun này sử dụng cùng tên và ký hiệu như được xác định bởi Phụ lục Tiêu chuẩn Unicode #44, "Unicode Character Database". Nó định nghĩa các chức năng sau:

Xem thêm

Zz000zz để biết thêm thông tin về Unicode và cách sử dụng mô-đun này.

unicodedata.lookup(name)

Tra cứu nhân vật theo tên. Nếu tìm thấy ký tự có tên đã cho, hãy trả về ký tự tương ứng. Nếu không tìm thấy, KeyError sẽ được nâng lên. Ví dụ:

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

Các ký tự được hàm này trả về giống với các ký tự được tạo bởi chuỗi thoát \N ở dạng chuỗi ký tự. Ví dụ:

>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
đúng

Thay đổi trong phiên bản 3.3: Hỗ trợ cho các bí danh tên [1] và các chuỗi được đặt tên [2] đã được thêm vào.

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

Trả về tên được gán cho ký tự chr dưới dạng một chuỗi. Nếu không có tên nào được xác định, default sẽ được trả về hoặc nếu không được đưa ra, ValueError sẽ được nâng lên. Ví dụ:

>>> unicodedata.name('½')
'VULGAR FRACTION ONE HALF'
>>> unicodedata.name('\uFFFF', 'dự phòng')
'dự phòng'
unicodedata.decimal(chr, default=None, /)

Trả về giá trị thập phân được gán cho ký tự chr dưới dạng số nguyên. Nếu không xác định giá trị như vậy, default sẽ được trả về hoặc nếu không được cung cấp, ValueError sẽ được nâng lên. Ví dụ:

>>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}')
9
>>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1)
-1
unicodedata.digit(chr, default=None, /)

Trả về giá trị chữ số được gán cho ký tự chr dưới dạng số nguyên. Nếu không có giá trị nào được xác định, default sẽ được trả về hoặc nếu không được cung cấp, ValueError sẽ được nâng lên:

>>> unicodedata.digit('\N{SUPERSCRIPT NINE}')
9
unicodedata.numeric(chr, default=None, /)

Trả về giá trị số được gán cho ký tự chr dưới dạng float. Nếu không có giá trị nào được xác định, default sẽ được trả về hoặc nếu không được cung cấp, ValueError sẽ được nâng lên:

>>> unicodedata.numeric('½')
0,5
unicodedata.category(chr)

Trả về danh mục chung được gán cho ký tự chr dưới dạng chuỗi. Tên danh mục chung bao gồm hai chữ cái. Xem General Category Values section of the Unicode Character Database documentation để biết danh sách mã danh mục. Ví dụ:

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

Trả về lớp hai chiều được gán cho ký tự chr dưới dạng chuỗi. Nếu không có giá trị nào được xác định, một chuỗi trống sẽ được trả về. Xem tài liệu Bidirectional Class Values section of the Unicode Character Database để biết danh sách mã hai chiều. Ví dụ:

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

Trả về lớp kết hợp chuẩn được gán cho ký tự chr dưới dạng số nguyên. Trả về 0 nếu không có lớp kết hợp nào được xác định. Xem Canonical Combining Class Values section of the Unicode Character Database để biết thêm thông tin.

unicodedata.east_asian_width(chr)

Trả về chiều rộng Đông Á được gán cho ký tự chr dưới dạng chuỗi. Để biết danh sách chiều rộng và hoặc biết thêm thông tin, hãy xem Unicode Standard Annex #11.

unicodedata.mirrored(chr)

Trả về thuộc tính được nhân đôi được gán cho ký tự chr dưới dạng số nguyên. Trả về 1 nếu ký tự đã được xác định là ký tự "được phản chiếu" trong văn bản hai chiều, nếu không thì trả về 0. Ví dụ:

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

Trả về ánh xạ phân tách ký tự được gán cho ký tự chr dưới dạng chuỗi. Một chuỗi trống được trả về trong trường hợp không có ánh xạ nào được xác định. Ví dụ:

>>> unicodedata.decomposition('Ã')
'0041 0303'
unicodedata.normalize(form, unistr)

Trả về dạng bình thường form cho chuỗi Unicode unistr. Các giá trị hợp lệ cho form là 'NFC', 'NFKC', 'NFD' và 'NFKD'.

Tiêu chuẩn Unicode xác định các dạng chuẩn hóa khác nhau của chuỗi Unicode, dựa trên định nghĩa về tính tương đương chuẩn và tính tương thích tương đương. Trong Unicode, một số ký tự có thể được biểu diễn theo nhiều cách khác nhau. Ví dụ: ký tự U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) cũng có thể được biểu thị dưới dạng chuỗi U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA).

Đối với mỗi ký tự, có hai dạng thông thường: dạng thông thường C và dạng thông thường D. Dạng thông thường D (NFD) còn được gọi là phân rã chính tắc và dịch từng ký tự thành dạng phân rã của nó. Dạng thông thường C (NFC) trước tiên áp dụng phân tách chính tắc, sau đó soạn lại các ký tự được kết hợp trước.

Ngoài hai dạng này, còn có hai dạng chuẩn bổ sung dựa trên tính tương thích tương đương. Trong Unicode, một số ký tự nhất định được hỗ trợ và thông thường sẽ được thống nhất với các ký tự khác. Ví dụ: U+2160 (ROMAN NUMERAL ONE) thực sự giống với U+0049 (LATIN CAPITAL LETTER I). Tuy nhiên, nó được hỗ trợ bằng Unicode để tương thích với các bộ ký tự hiện có (ví dụ: gb2312).

Dạng bình thường KD (NFKD) sẽ áp dụng phân rã khả năng tương thích, nghĩa là thay thế tất cả các ký tự tương thích bằng các ký tự tương đương của chúng. Dạng chuẩn KC (NFKC) trước tiên áp dụng phân tách tương thích, tiếp theo là hợp thành chính tắc.

Ngay cả khi hai chuỗi unicode được chuẩn hóa và trông giống nhau đối với người đọc, nếu một chuỗi có các ký tự kết hợp còn chuỗi kia thì không, chúng có thể không so sánh bằng nhau.

unicodedata.is_normalized(form, unistr)

Trả về xem chuỗi Unicode unistr có ở dạng bình thường form hay không. Các giá trị hợp lệ cho form là 'NFC', 'NFKC', 'NFD' và 'NFKD'.

Added in version 3.8.

Ngoài ra, mô-đun còn hiển thị hằng số sau:

unicodedata.unidata_version

Phiên bản cơ sở dữ liệu Unicode được sử dụng trong mô-đun này.

unicodedata.ucd_3_2_0

Đây là một đối tượng có các phương thức giống như toàn bộ mô-đun nhưng thay vào đó sử dụng cơ sở dữ liệu Unicode phiên bản 3.2 cho các ứng dụng yêu cầu phiên bản cơ sở dữ liệu Unicode cụ thể này (chẳng hạn như IDNA).

Chú thích cuối trang