Contenu | Rechercher | Menus

Annonce

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, à 06:55

Compte supprimé

[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 Compte supprimé (Le 07/09/2019, à 08:03)

#2 Le 07/09/2019, à 07: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)

Hors ligne

#3 Le 07/09/2019, à 07: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, à 07:49

Compte supprimé

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

#5 Le 07/09/2019, à 07: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, à 07:52

Compte supprimé

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

#7 Le 07/09/2019, à 07: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

Hors ligne

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

Compte supprimé

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

Installé wink
pip install unidecode

#9 Le 07/09/2019, à 08: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, à 08: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).

Hors ligne