IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Affichage d'accents


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut Affichage d'accents
    Bonjour,

    Je suis sur une Debian/Lenny et utilise Python 2.5.2.

    J'ai un problème d'affichage de caractères accentués.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> liste = ['machin', 'bîdule']
    >>> print liste
    ['machin', 'b\xeedule']
    >>> print liste[1]
    bîdule
    Je suis débutant, et je ne comprend pas pourquoi l'affichage de mes accents ne se fait pas dans mes listes.
    D'ou vient le problème et comment puis-je y remédier ?

    Merci !!!!

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    C'est le comportement normal. Quand tu demandes d'afficher une liste, ses éléments sont affichés à l'aide de __repr__. Pour les chaînes de caractères contenant des accents (ou autres caractères non-ASCII), la chaîne contient des séquences d'échappement. Si tu veux afficher les chaînes traitées, tu vas devoir faire toi-même une fonction.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut
    Merci pour ta réponse rapide.

    Citation Envoyé par oiffrig Voir le message
    ... tu vas devoir faire toi-même une fonction.
    J'ai trouvé sur le forum une solution à ce que tu proposes :
    http://www.developpez.net/forums/d80...-liste-codage/

    Je n'ai donc aucunes solutions plus "direct" pour pouvoir afficher ma liste sans erreurs d'encodage ?

    Merci

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si tu te limites à afficher une simple liste de chaines ayant toutes le même encodage, voilà une version simplifiée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # -*- coding: utf-8 -*-
     
    import sys
     
    def printliste(L, decod='utf-8'):
        ch = '['
        if len(L) != 0:
            for x in L:
                ch += x.decode(decod).encode(sys.stdout.encoding) + ', '
            ch = ch[:-2]
        ch += ']'
        print ch
     
    liste = ['machin', 'bîdule', 'abcéèçàùôîê']
    printliste(liste)
    [machin, bîdule, abcéèçàùôîê]
    Le paramètre optionnel decod='utf-8' est là pour tenir compte de l'encodage des chaines de la liste. Cet encodage est ici celui du code source, enregistré en utf-8, avec info de Python par la ligne coding. Cette solution très simplifiée ne marche pas avec des chaines en unicode (u"xxx"), à moins d'ajouter un test pour éliminer le decode() dans ce cas.

    Dans la solution que j'ai donnée dans le fil que tu cites, les chaines n'avaient pas toutes le même encodage, et la solution permettait d'afficher des arbres (liste de liste de liste...).


    Tyrtamos

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 23
    Par défaut
    Merci pour la fonction tyrtamos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH 8] Affichage des accents
    Par jbidou88 dans le forum Flash
    Réponses: 2
    Dernier message: 31/10/2006, 09h19
  2. Réponses: 1
    Dernier message: 22/12/2005, 15h45
  3. Réponses: 1
    Dernier message: 21/11/2005, 11h37
  4. Problème d'affichage d'accent - latin1
    Par damjal dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/05/2005, 17h06
  5. Réponses: 11
    Dernier message: 16/12/2003, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo