Lompat ke konten utama
←

Mengolah Teks dengan Python

Pelajaran 2 dari 16

Teks sebagai data: str dan Unicode

Normalisasi Unicode: NFC, NFD, NFKC, NFKD

Setelah pelajaran ini kamu bisa menyamakan teks yang tampak sama dengan unicodedata.normalize.

±13 menitDiperiksa 27 Sep 2026

Materi

Normalisasi mengubah teks ke satu bentuk baku, sehingga teks yang tampak sama juga sama urutan code point-nya. Unicode Standard Annex #15 menetapkan empat bentuk: NFC dan NFD untuk kesetaraan kanonik, serta NFKC dan NFKD untuk kesetaraan kompatibilitas. Di Python, keempatnya tersedia lewat unicodedata.normalize(bentuk, teks).

BentukYang dilakukanContoh
NFDMemecah huruf tersusun menjadi huruf dasar dan tanda gabungé (1 code point) → e + U+0301 (2)
NFCMemecah, lalu menyusun kembali ke bentuk tersusune + U+0301 → é
NFKDSeperti NFD, ditambah mengganti karakter kompatibilitasfi (ligatur) → f i
NFKCSeperti NFC, ditambah mengganti karakter kompatibilitas2026 (lebar penuh) → 2026
import unicodedata

a = "Jose\u0301"          # e + aksen gabung
b = "Jos\u00e9"           # é tersusun
print(a == b)                                   # False
print(unicodedata.normalize("NFC", a) == b)     # True
print(unicodedata.normalize("NFKC", "Rp5"))  # Rp5

Normalisasi dipakai sebelum membandingkan, mengelompokkan, atau menghitung teks dari sumber berbeda. NFC mempertahankan tampilan teks, sehingga cocok untuk teks yang disimpan dan dicetak ulang. NFKC lebih jauh: ia menyamakan huruf lebar penuh, ligatur, dan angka superskrip dengan huruf dan angka padanannya. Hasilnya cocok untuk kunci pencarian, tetapi tampilan ikut berubah, misalnya ² menjadi 2.

unicodedata.combining(c) memberi angka bukan nol untuk tanda gabung. Menormalkan ke NFD lalu membuang karakter yang combining-nya bukan nol menghasilkan teks tanpa aksen. Cara ini hanya menyentuh tanda gabung, jadi huruf seperti ø yang tidak punya dekomposisi tetap tertinggal apa adanya.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 2 dari 3

Kolom harga di berkas ekspor berisi Rp12.000 dengan huruf dan angka lebar penuh. Bentuk normalisasi mana yang mengubahnya menjadi Rp12.000?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke