OVH Cloud OVH Cloud

Conversion de caracteres accentues en ces memes caracteres non accentues

11 réponses
Avatar
Frédéric Momméja
Bonjour à tous,

j'aimerais savoir si l'un d'entre vous connaît un module ou une manière
élégante qui permette de transformer les caractères accentués d'une
phrase en leur équivalent non accentué ?

Par exemple : « Vous êtes extrêmement sympas de m'avoir dépanné »
deviendrait : « Vous etes extremement sympas de m'avoir depanne »

Pour l'instant, j'utilise un dictionnaire...
Le but est de transformer des titres de chapitre en URLs pour au final
avoir : « Vous_etes_extremement_sympas_de_m_avoir_depanne »
(virer les espaces et les apostrophes, je sais faire).

Merci. ;)

--
Frédéric Momméja

1 réponse

1 2
Avatar
Frédéric Momméja
Amaury écrivait le 29/06/05 19:34 :
J'ai mis le temps, mais j'ai trouvé une méthode qui n'a pas besoin de
lister tous les caractères. Elle utilise le module unicodedata:

from unicodedata import decomposition
s = u"Vous êtes extrêmement sympas de m'avoir dépanné"
"".join([chr(int((decomposition(c) or hex(ord(c))).split()[0],16))
for c in s])

C'est peut-être plus clair comme ceci:

from unicodedata import decomposition
def enleveAccent(car):
deco = decomposition(car)
if deco:
return chr( int( deco.split()[0] ,16) )
else:
return car

s = u"Vous êtes extrêmement sympas de m'avoir dépanné"
print "".join([enleveAccent(c) for c in s])


Superbe ! ;)
Merci.

--
Frédéric Momméja

1 2