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 :

mise en forme d'une liste


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut mise en forme d'une liste
    bonjour

    j'ai la liste suivante dans une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val_prop1 = [<User: pierre>, <User: alain>]
    je veux eliminer [< User: > , ]

    j'ai ecrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tt= [s.replace('[', '').replace(']', '').replace('<', '').replace('>', '').replace('User:', '').strip() for s in val_prop1.split(',')]
    j'obtiens l'erreur

    Exception Value:

    'list' object has no attribute 'split'

    et meme chose pour replace, strip ??

    je comprend pas car j'ai deja utilisé cette procedure

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    .split est une méthode applicable aux chaînes de caractères.
    Appliquez str a val_prop1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tt= [ ...  for s in str(val_prop1).split(',')]
    Ca devrait mieux marcher.

    Techniquement, "[<User: pierre>, <User: alain>]" est la sortie d'un print(val_prop). Si val_prop est "list", elle comprend deux instances d'une classe User dont la méthode __repr__ a ete code pour retourner autre chose que le "defaut".
    Ca veut dire aussi que pierre et alain sont la valeur d'un attribut, disons "name" et que vous pourriez obtenir le meme resultat en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tt = [ u.name for u in val_prop ]
    C'est beaucoup plus direct... et ca ne depend pas de ce que retourne la méthode __repr__ pour avoir un affichage plus "joli".
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 567
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val_prop1 = [<User: pierre>, <User: alain>]
    Je ne vois pas comment tu as pu faire digérer cela à Python, l'interpréteur te jette tout de suite.

    strip() et replace() sont des méthodes de chaînes pas de liste.
    Bref, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val_prop1 = "[<User: pierre>, <User: alain>]"
    Tu auras certainement certainement des résultats plus probants.

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for s in str(val_prop1).split(',')]
    marche pas
    voila ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def malist(request):
        obj = malist.objects.all()
        val_prop1=[]
        val_prop2=[]
        val_prop3=[]
     
        for e in obj:
            val_prop1.append(e.user)
            val_prop2.append(e.material)
            val_prop3.append(e.categorie)
     
        print val_prop1
        print val_prop2
        print val_prop3
    voila ce que j'obtiens :

    [<User: pierre>, <User: alain>]
    [<Material: MO78>, <Material: Al2O6>]
    [<Category: ceramic>, <Category: ceramic>]

    malist est une classe definie par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    user = models.ForeignKey(User)
    material = models.ForeignKey("Material")
    categorie =  models.ForeignKey("Category")
    Material et Category sont deux autres classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Category(models.Model):
        name = models.CharField(_('name'), max_length=50)
    .......
     
    class Material(models.Model):
        name = models.CharField(_('name'), max_length=50)
    .........

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Django n'est pas un framework pour débutant.

    Désolé et bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut
    ca marche presque !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ff = str(val_prop1)
     tt= [s.replace('[', '').replace(']', '').replace('<', '').replace('>', '').replace('User:', '').strip() for s in ff.split(',')]
    j'obtiens maintenant :

    ['pierre', 'alain']

    c'est curieux que les crochets n'aient été supprimés ?

    je cherche a avoir

    pierre
    alain

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    My god, c' est horrible cette dernière ligne!!!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> pattern = "<[]="
    >>> def rep(pat, chaine):
    ...     for ponct in pat:
    ...         chaine = chaine.replace(ponct, '')
    ...     return chaine
    ... 
    >>> rep(pattern, "[if a>b: x:=3]")
    'if a>b: x:3'

Discussions similaires

  1. [XL-2007] Mise en forme d'une liste
    Par Nounours1 dans le forum Conception
    Réponses: 0
    Dernier message: 22/12/2010, 22h06
  2. Mise en forme d'une liste
    Par Olivier Regnier dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/10/2007, 17h44
  3. Problème de mise en forme dans une liste personnalisée
    Par smarties dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 17/01/2007, 15h47
  4. Pb de mise en forme dans une liste de selection
    Par crashyear dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2006, 11h58

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