← retour aux snippets

unicodedata.normalize: supprimer les accents en NFD

Normaliser Unicode et filtrer les diacritiques (accents).

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.