Ces caractères peuvent poser problème lors du nommage de fichiers, de la création d'URLs ou du stockage en base de données.
L'astuce : La normalisation Unicode#
L'astuce consiste à convertir la chaîne de caractères en ASCII. Pour cela on va faire appel au module unicodedata.
Le code#
#! /usr/bin/env python3
# coding : utf-8
import unicodedata
def clean(text):
y = unicodedata.normalize('NFKD', text).encode('ASCII', 'ignore')
return y.decode("utf-8")
sample_text = u"mà chàîne âvèc dès càräctères spéciâüx ça le fait"
cleaned_text = clean(sample_text)
print(cleaned_text)
Comment ça fonctionne ?#
- Normalisation (NFKD) : Cette étape décompose les caractères accentués. Par exemple, le caractère "é" est transformé en deux entités : la lettre "e" et l'accent aigu séparé.
- Encodage ASCII : En encodant en ASCII avec l'option ignore, Python conserve le "e" (qui est un caractère ASCII valide) mais supprime l'accent (qui ne l'est pas).
- Décodage : On revient en utf-8 pour retrouver une chaîne de caractères (string) classique.
Vous savez à présent comment retirer les accents de vos textes. Rendez-vous très prochainement pour un nouveau tutoriel Python !
Commentaires