Affichage accents dans les listes en Python

Résolu/Fermé
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009 - 9 févr. 2009 à 20:28
 PetitPimousse - 10 mars 2009 à 17:08
Bonjour,

En Python, lorsque j'utilise la méthode "append" pour ajouter des éléments à mes listes, j'ai un problème avec l'affichage des accents. Par exemple, si la valeur de ma variable est "Février", je reçois en sortie par la méthode append "F\xe9vrier". Si j'utilise la commande "print" avec la même variable, l'affichage est bon.

Quel est le problème?

Merci
A voir également:

6 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 févr. 2009 à 09:11
A lire impérativement concernant tes problème d'accents:
https://sebsauvage.net/python/charsets_et_encoding.html
1
salut seb,
dis moi sais-tu comment je peux transformer une liste en chaine de caractere?
voici mon code:
def mdp_aleat():
print "Combien de caracteres?",
nb_caract=int(raw_input())
mdp=nb_caract*[0]
val=nb_caract*[0]
for i in range (nb_caract):
val[i]=random.randrange(random.randrange(48,90),random.randrange(97,122))
mdp[i]=chr(val[i])
print val, mdp
print "Mot de passe=",mdp

malheuresement, mdp me retourne une liste ms moi je voudrai recuperer une chaine de caratère.
Merci
0
Utilisateur anonyme
9 févr. 2009 à 20:31
Salut, c'est normal, ce qui est retourné est un objet string. Cet objet est codé. La fonction print se charge de décoder pour afficher.
0
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
9 févr. 2009 à 20:40
Y'a-t-il un moyen alors de décoder l'objet string via la méthode append ou faut-il absolument extraire l'objet de la liste et le faire imprimer par print pour que l'affichage soit correct?
0
Utilisateur anonyme
9 févr. 2009 à 20:42
Dans un programme on se sert en général de print pour afficher des résultats, pourquoi vouloir passer directement par l'objet? Puis cette chaîne tu dois l'afficher où? Sur la console? Dans une interface graphique?
0
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
9 févr. 2009 à 20:58
En fait, j'utilise "print" mais pour afficher la valeur de la variable mise à jour par "append". Je voulais juste savoir s'il était possible d'afficher directement cette variable avec les bons caractères sans en extraire les éléments un à un.

exemple:

t3=['Janvier']

t3.append('Février']

print t3


La sortie va donner ['Janvier', 'F\xe9vrier'].

Est-il possible d'avoir directement la sortie: ['Janvier', 'Février']?
0
Utilisateur anonyme
9 févr. 2009 à 21:15
Là tu affiche un objet liste qui utilise lui même des objets chaîne, donc codés. Essaie de mettre peut être au début du code source :

#  -*- coding=latin-1 -*-
0
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
9 févr. 2009 à 21:37
Bien entendu, c'est la première chose que j'ai essayé avant de "poster" ce problème. J'ai même essayé plusieurs codages (utf-8, etc...)

Ça ne change rien...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
10 févr. 2009 à 14:43
print "Mot de passe=","".join(mpd)
0
merci
0
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
10 févr. 2009 à 16:43
Alors je dois conclure que je ne peux pas afficher directement une liste avec des éléments comprenant des accents, il faut que j'extraie les éléments et que je passe par print pour chaque élément pour avoir un affichage décodé? C'est ça?
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655 > ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
10 févr. 2009 à 17:06
Non.
Pas besoin.

Exemple de code:
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

maliste = [u"bébé",u"tété",u"mémé"]
print ' ; '.join(maliste)



et dans une fenêtre Dos, je lance mon programm qui s'affiche très bien:
c:\3>python a.py
bébé ; tété ; mémé
0
ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009 > sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019
10 févr. 2009 à 17:19
Ça marche lorsqu'il n'y a que des mots dans la liste. Le problème c'est que ma liste comprend des "strings" et des "integer"... ce que la fonction "join" ne semble pas supporter:

TypeError: sequence item 1: expected string or Unicode, int found
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655 > ugluk Messages postés 7 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 10 février 2009
10 févr. 2009 à 17:26
ah ben oui, quand on mélange des pommes et des bananes :-)

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

maliste = [u"bébé",u"tété",5,u"mémé"]
print ' ; '.join( [unicode(i) for i in maliste] )
0
merci
0