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 :

erreur lors de l'affichage du tableau


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut erreur lors de l'affichage du tableau
    Bonjour
    j'ai un tableau que j'ai déclaré vide
    j'ai inséré dedans avec : tableau.append("text")
    puis j'ai fait print tableau
    mais j'ai cette affichage bizarre un 'u' devant les éléments du tableau :
    [u'text']
    vous avez une idée d’où vient ce problème ?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    j'ai un 2eme probleme
    voici le code que je test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab=[]
    tab.append("hi")
    tab.extend("yes")
    print tab
    il m'affiche ces résultats ['hi', 'y', 'e', 's']
    alors que je voudrais qu'il me les affiche comme ca : ['hi', 'yes']
    et quand j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab=[]
    tab.append("hi")
    tab.append("yes")
    print tab
    il a bien affiché ['hi', 'yes']
    comment expliquez vous ces résultats
    et svp répondez moi sur ma première question concernant l'affichage de 'u' devant les éléments du tableau
    merci

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    le u devant une chaine de texte mentionne que c'est une chaine unicode.

    ensuite la différence est normale:

    append ajoute un élément à la liste
    extend ajoute l'ensemble des éléments de la séquence donnée.

    Une chaine est une séquence, en faisant un extend("ab"), c'est comme si on faisait un append("a") puis un append("b").

  4. #4
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Très simple

    Pour le u, cela signifie simplement que la chaîne est unicode – de même, tu peux créer une chaîne unicode en rajoutant u juste avant le premier guillemet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str_normal = "test"
    str_unicode = u"test"
    À noter, ceci n’est valable que pour python2.x, python3 utilise par défaut des chaînes unicodes, plus besoin de spécifier u devant.

    D’ailleurs, il existe d’autres “modificateurs de chaîne”, par exemple r indique de ne pas interpréter \ comme caractère d’échappement (r pour “raw”, chaîne brute)*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str_normal = "test\n" # \n correspond à un retour à la ligne
    str_echap = r"test\n" # \n sera ajouté littéralement à la fin de la chaîne, et pas de retour à la ligne
    Quand au deuxième point, append ajoute un élément à la liste, alors que extend ajoute tous les éléments de l’iterable passé en paramètre à la liste. Comme une chaîne est iterable (c’est un tableau de caractères), si tu la passes à extend, il va ajouter chaque caractère à part, alors qu’append ajoute la chaîne comme un tout. C’est pareil avec une liste*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    l = [1, 2, 3]
    l.append([4, 5, 6])
    l.extend([7, 8, 9])
    l
     
    [1, 2, 3, [4, 5, 6], 7, 8, 9]
    [EDIT] grillé par kango

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    merci
    mais une question concernant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    str_normal = "test"
    str_unicode = u"test"
    si ma chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_normal=self.variable #print str_normal=test
    comment je fais dans ce cas pour l'unicode ?

  6. #6
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Je ne comprends pas ton problème ?

    Si self.variable est une chaîne unicode, str_normal sera aussi unicode, et si self.variable est un str standard, str_normal de même…

    En Python2.x, tu peux convertir un unicode en str comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uni = u"un test bête"
    # On ne peut pas utiliser str(uni), car ê n’est pas ascii.
    string = uni.encode('latin9') # latin9 (ISO-8859-15) est un encodage 8bit pour caractères européens…
    Attention, si un caractère n’est pas convertible (un “…” par ex.), la conversion lèvera une exception.

    Pour convertir une chaîne standard en unicode, c’est plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string = "un test bête"
    uni = unicode(str)
    Voilà

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    mais on peut pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stringUnicode=u'self.variable'
    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stringUnicode=unicode(self.variable)
    et ca marche pas

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

Discussions similaires

  1. erreur lors de l'affichage d'un tableau
    Par romrom12 dans le forum Langage
    Réponses: 6
    Dernier message: 30/04/2012, 23h05
  2. Réponses: 3
    Dernier message: 25/02/2008, 09h09
  3. [MySQL] Erreur lors de l'affichage de données
    Par s0ak68 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/11/2006, 08h37
  4. erreur lors de l'affichage
    Par WELCOMSMAIL dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2006, 09h35
  5. [Artichow] Erreur lors de l'affichage du graph
    Par ouldfella dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/04/2006, 17h31

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