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 :

Manipulation list python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Par défaut Manipulation list python
    Bonjour,

    Je suis coincé sur un léger détails dans un programme que je suis en train de mettre en place.

    Je travail sous un logiciel écrit en python et je souhaite y modifier quelques fonctionnalités, en gros voici mon problème :

    service = netsvc.LocalService("object_proxy")
    res_ids = service.execute(cr.dbname, uid, 'res.partner.address', 'search', [('partner_id','in',data['ids']),('type','=','default')])
    res = service.execute(cr.dbname, uid, 'res.partner.address', 'read', res_ids, ['mobile'])
    je vais chercher logiquement la valeur de l'attribut téléphone dans la base de donnée(PostGre) lier avec le logiciel.

    ensuite par la suite je souhaite concatener cette valeur à un string(je post ici un exemple simplifié pour ne pas compliquer ^^)

    chaine="numero :"
    chaine+=res
    Le code n'est pas accepté car apparemment le res serait une list de part les fonctions effectués ci dessus.

    Je voudrais donc juste pouvoir afficher ce que contient la variable res pour pouvoir par la suite le transformer en string et donc réussir à le concatener.

    Pour cela j'ai fais une simple écriture en dessous :

    fichier = open("test.txt", "w")
    fichier.write(res)
    fichier.close()
    Mais malheureusement là encore j'ai une erreur car on ne peut pas écrire une liste dans un fichier :s

    Si quelqu'un avait une idée pour résoudre ce problème ça m'aiderait grandement

    Je vous remercie d'avance

    Edit : j'ai fait une transformation de ma list :

    res2=str(list)

    et là j'obtiens juste un[] dans mon fichier je pense c'est mauvais signe xD

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Bonjour,



    Je n'ai pas compris grand chose.
    Voici un code qui te donnera peut être quelques idées.


    Pour connaître le type d'un objet, pense aussi à ola fonction type()

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class A:
        pass
    def f(x): return 2*x
    tu = ('ab',123,A)
     
    li = [ 899,'gertrude',A, tu,None,'werty',f]
     
    print li
    print
    print repr(li)
    print
    print str(li)
    print
     
    litr = map(repr,li)
    print litr
    print
    print ' ,, '.join(litr)
    print
     
    lotr = map(str,li)
    print lotr
    print
    print ' :: '.join(lotr)
    print

  3. #3
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Pour afficher le contenu d'une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> liste = [ 1,2,3,'nous',('irons','au bois')]
    >>> liste
    [1, 2, 3, 'nous', ('irons', 'au bois')]
    >>> str( liste )
    "[1, 2, 3, 'nous', ('irons', 'au bois')]"
    >>> print '----'.join( map( str,liste ))
    1----2----3----nous----('irons', 'au bois')
    et si en plus tu veux pouvoir la stocker et la relire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> s = repr( liste )
    >>> s   # il ne te reste qu'à stocker 's' dans un fichier
    "[1, 2, 3, 'nous', ('irons', 'au bois')]"
    >>> liste2 = eval( s )
    >>> liste2
    [1, 2, 3, 'nous', ('irons', 'au bois')]
    et voilà, liste2 contient une copie de liste.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 20
    Par défaut
    J'ai une autre petite question tant que j'y suis ^^

    J'ai une variable string qui contient en gros une réponse d'une requête en XML.

    J'aimerai en extraire les informations essentielles, et pour cela avoir ne méthode de parsing efficace.

    En gros voici ma chaine :

    <?phpxml version="1.0" encoding="utf-8"?>
    <SmsResponse>
    <version>1</version>
    <result>0</result>
    <resultstring>failure</resultstring>
    <description>Invalid Number</description>
    <endcause>19</endcause>
    </SmsResponse>
    J'aimerais ressortir l'élément de la balise resulstring et description. En gros lui dire de prendre uniquement le contenu de ces balises j'ai cherché dans les méthodes de manipulation de chaine une qui serait efficace dans ce cas mais je ne trouve rien de judicieux

    Si,quelqu'un avait une idée ça serait pas mal ^^

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    À mon sens

    <?phpxml version="1.0" encoding="utf-8"?>
    <SmsResponse>
    <version>1</version>
    <result>0</result>
    <resultstring>failure</resultstring>
    <description>Invalid Number</description>
    <endcause>19</endcause>
    </SmsResponse>
    n'est pas une chaîne mais l'affichage d'une chaîne.

    La chaîne dont tu parles (ou plutôt la valeur de cette chaîne) est donnée par repr()





    Pour ton problème il y a deux solutions immédiates:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ch = '''<?phpxml version="1.0" encoding="utf-8"?> 
    <SmsResponse>
    <version>1</version>
    <result>0</result> 
    <resultstring>failure</resultstring>
    <description>Invalid Number</description>
    <endcause>19</endcause>
    </SmsResponse>  
    '''
    print repr(ch)
     
    res = ch.partition('<resultstring>')[2].partition('</resultstring>')[0]
    des = ch.partition('<description>')[2].partition('</description>')[0]

    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
    17
    18
    ch = '''<?phpxml version="1.0" encoding="utf-8"?> 
    <SmsResponse>
    <version>1</version>
    <result>0</result> 
    <resultstring>failure</resultstring>
    <description>Invalid Number</description>
    <endcause>19</endcause>
    </SmsResponse>  
    '''
    print repr(ch)
     
    import re
     
    print
    pat = re.compile('(<(resultstring|description)>)(.*?)(?(1)</\\2>)')
    print pat.findall(ch)
    print
    print [ u.group(3) for u in  pat.finditer(ch)]

    (?(1)</\\2>) se lit:
    si le groupe (1) existe, il doit y avoir ici la chaîne '</' + groupe(2) + '2'
    Le groupe 1 est celui capté par le premier groupe de parenthèses, à savoir (<(resultstring|description)>)

  6. #6
    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,

    pourquoi ne pas utiliser une bibliothèque faite pour ça ?

    http://docs.python.org/library/markup.html

Discussions similaires

  1. vecteur C vers liste Python
    Par jyjeanphi dans le forum Interfaçage autre langage
    Réponses: 4
    Dernier message: 30/03/2009, 05h01
  2. Réponses: 9
    Dernier message: 26/09/2007, 17h21
  3. Que choisir pour une application de "gestion d'une todo liste" ? Python ou Java ?
    Par Yoshidu62 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 10/08/2007, 09h03
  4. Réponses: 4
    Dernier message: 11/04/2006, 14h40
  5. manipulation liste déroulante
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/12/2005, 22h27

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