Contenu | Rechercher | Menus

Annonce

La nouvelle clé USB Ubuntu-fr est en prévente
Rendez-vous sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/09/2019, à 07:55

pseudofab

[Résolu] Python: Remplacer les caractères accentués d'une chaîne

Bonjour,
Je souhaite remplacer tous les accents d'une chaîne de caractère par des caractères équivalent sans accents.
J'ai pensé à un code du genre de celui présenté ci dessous...mais j'imagine qu'il y a d'autres façons de faire. Comment procéderiez vous?
Merci

### enlève accents chaine str  ###
mot = 'éèçêẽàù mais pas que'
mot_sans_accents = []
for i in mot:
    if i == 'é' or i == 'è' or i =='ê' or i == 'ẽ':
        i = 'e'
    if i == 'ç':
        i = 'c'
    if i == 'à' or i== 'â' or i == 'ã':
        i = 'a'
    
    mot_sans_accents.append(i)
    mot_sans_accents = "".join(mot_sans_accents)    
        

Dernière modification par pseudofab (Le 07/09/2019, à 09:03)


# Là pour le plaisir de découvrir .

# Débutant en tout ...  je me régale !

Hors ligne

#2 Le 07/09/2019, à 08:26

nany

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Bonjour,

import unidecode

mot = 'éèçêẽàù mais pas que'
mot_sans_accents = unidecode.unidecode(mot)

print(mot_sans_accents)

Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

Hors ligne

#3 Le 07/09/2019, à 08:29

pingouinux

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Bonjour,
Tu n'as pas dû essayer ton script, car il génère une erreur : il ne faut pas convertir la liste mot_sans_accents en chaîne à chaque itération.

Je te propose cette méthode, qui permet d'ajouter facilement d'autres caractères à convertir.

### enlève accents chaine str  ###
mot = 'éèçêẽàù mais pas que'

tablo = { 'éèêẽ' : 'e'
        , 'ç'    : 'c'
        , 'àâã'  : 'a'
        , 'ù'    : 'u'
        }

mot_sans_accents = ''
for i in mot:
    for k in tablo:
        if i in k: i = tablo[k]; break
    mot_sans_accents += i

print(mot_sans_accents)

Hors ligne

#4 Le 07/09/2019, à 08:49

pseudofab

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Merci nany, pingouinux

Je connaissais pas le module unidecode, j'en prend note . Par contre, cela implique son installation  ..

pingouinux: J'ai en effet mal recopié mon script .. Ta solution est plus compacte que la mienne, je prends


# Là pour le plaisir de découvrir .

# Débutant en tout ...  je me régale !

Hors ligne

#5 Le 07/09/2019, à 08:50

pingouinux

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

@nany #2 :
Où trouve-ton le module unidecode ? À moins qu'il ne s'agisse d'une faute de frappe ?

Hors ligne

#6 Le 07/09/2019, à 08:52

pseudofab

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne


# Là pour le plaisir de découvrir .

# Débutant en tout ...  je me régale !

Hors ligne

#7 Le 07/09/2019, à 08:57

nany

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Dans le dépôt universe :

apt show python-unidecode python3-unidecode

Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

Hors ligne

#8 Le 07/09/2019, à 08:58

pseudofab

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Installé wink
pip install unidecode


# Là pour le plaisir de découvrir .

# Débutant en tout ...  je me régale !

Hors ligne

#9 Le 07/09/2019, à 09:08

pingouinux

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

Merci. C'est effectivement plus simple avec unidecode, que je ne connaissais pas.

En python2, la chaîne doit être préfixée :

mot = u'éèçêẽàù mais pas que'

Hors ligne

#10 Le 07/09/2019, à 09:11

nany

Re : [Résolu] Python: Remplacer les caractères accentués d'une chaîne

pingouinux a écrit :

En python2, la chaîne doit être préfixée :

Merci de cette précision, je n’avais testé qu’avec python3 (la version 2 étant bientôt abandonnée).


Le mot de passe sudo ne s'affiche pas
Comment bien utiliser les balises BBcode
LIBRARIES ARE NOT BOOK-STORES! − Une souris, des souris. Un souci, des soucis. Une énigme résolue, un problème résolu.
J’ai forké le compteur-couche-tard.

Hors ligne