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

  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

  8. #8
    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
    Tu es en python 2 ou 3 ?

    Parce qu’en Python3, toutes les chaînes de caractère sont systématiquement en unicode, donc u"" et unicode() ont disparus (et généreront des erreurs de syntaxe)…

    Sinon, en Python2, ça marche ! Et plutôt que de dire « ça marche pas », il vaudrait mieux nous donner l’erreur (exception) produite, avec le trace back… Et si possible, un peu de code, si tu veux qu’on essaye de comprendre le problème

  9. #9
    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
    python 2
    y a pas d'erreur c'est juste l'affichage du tableau :

  10. #10
    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
    pour le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #je recupere une chaine dans le 
    #variable"test"
    chaine=self.variable
    #print chaine donne comme resultat :test
    #puis je l'ajoute 
    tableau.append(chaine)
    # et j'affiche
    print tableau[0]
    #ca affiche 
    [u'test']

  11. #11
    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
    Si tu fais…

    …ça donne quoi ?

    [EDIT] Parce que j’ai vraiment l’impression que self.variable n’est pas une string, mais plutôt un tableau genre [u'test']…

  12. #12
    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
    ca donne le contenu : test
    la variable récupérée

  13. #13
    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
    Et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print chaine
    print tableau
    ?

    (Sinon, donne-nous plus de code, qu’on comprenne d’où vient le problème*!)

  14. #14
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nancy maman Voir le message
    python 2
    y a pas d'erreur c'est juste l'affichage du tableau :
    C'est normale, tout est objet en python.

    ta chaine est un objet Unicode.

    Si tu veux sortir la chaine, self.variable.__str__() te donnera bien 'chaine'
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  15. #15
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print chaine #donne comme resultat :test
    print tableau[0]
    #ca affiche  [u'test']

  16. #16
    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
    Citation Envoyé par Golgotha Voir le message
    self.variable.__str__()
    merci ca marche super bien
    j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    chaine=self.variable.__str__()
    tableau.append(chaine)
    print tableau[0]
    #ca affiche ['test']
    merci à vous tous

+ 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