Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Fungsi `unicodedata.normalize()` Python Memudahkan Perwakilan Unikod?

Bagaimanakah Fungsi `unicodedata.normalize()` Python Memudahkan Perwakilan Unikod?

DDD
DDDasal
2024-11-22 16:12:15254semak imbas

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

Menormalkan Unikod dalam Python: Mempermudahkan Perwakilan Unikod

Dalam Python, modul unicodedata menyediakan fungsi .normalize() untuk memudahkan perwakilan rentetan Unicode . Fungsi ini mengubah entiti Unicode terurai kepada bentuk komposit termudah mereka.

Pertimbangkan contoh berikut:

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']

Aksara "á" terdiri daripada dua titik kod: U 0061 (HURUF KECIL LATIN A) dan U 0301 (MENGABUKKAN AKSEN AKUT). Diuraikan, aksara ini muncul sebagai "á."

Untuk menormalkan rentetan ini, kita boleh menggunakan .normalize('NFC'), yang mengembalikan bentuk yang digubah:

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

Sebaliknya, . normalize('NFD') mengembalikan bentuk terurai:

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

Borang normalisasi tambahan wujud untuk dikendalikan mata kod keserasian. NFKC dan NFKD menggantikan aksara keserasian dengan bentuk kanoniknya. Contohnya, U 2160 (ROMAN NUMERAL SATU) menormalkan kepada "I" menggunakan NFKC:

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

Perlu ambil perhatian bahawa penormalan tidak selalu boleh diterbalikkan, kerana sesetengah aksara mungkin tidak mempunyai bentuk terurai yang unik.

Atas ialah kandungan terperinci Bagaimanakah Fungsi `unicodedata.normalize()` Python Memudahkan Perwakilan Unikod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn