objectif
Normaliser Unicode et filtrer les diacritiques (accents).
code minimal
import unicodedata
s = "café"
nfd = unicodedata.normalize("NFD", s)
stripped = "".join(ch for ch in nfd if unicodedata.category(ch) != "Mn")
print(stripped == "cafe") # attendu: True
utilisation
import unicodedata
def strip_accents(s: str) -> str:
nfd = unicodedata.normalize("NFD", s)
return "".join(ch for ch in nfd if unicodedata.category(ch) != "Mn")
print(strip_accents("Élève") == "Eleve")
variante(s) utile(s)
import unicodedata
print(unicodedata.normalize("NFC", "e\u0301") == "é")
notes
- NFD décompose les caractères en base + diacritiques.
- Filtrez la catégorie “Mn” (Nonspacing_Mark) pour enlever les accents.