Affichage accents dans les listes en Python

Résolu
ugluk Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 PetitPimousse -
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   Statut Modérateur Dernière intervention   15 662
 
A lire impérativement concernant tes problème d'accents:
https://sebsauvage.net/python/charsets_et_encoding.html
1
@robaze
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   15 662
 
print "Mot de passe=","".join(mpd)
0
@robaze
 
merci
0
ugluk Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   15 662 > ugluk Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ç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   Statut Modérateur Dernière intervention   15 662 > ugluk Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
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
@robaze
 
merci
0