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 :

Rechercher dans une liste


Sujet :

Python

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut Rechercher dans une liste
    Salut

    Voila j'ai un petit soucis

    j'ai une liste de cette forme

    log=[ 11 22 33, 44 55 66, 77 88 99 00 ]

    J'ai environ 100 variable dans cette liste

    Je voudrais enlever tout les espaces de chaque éléments en évitant de passer par un for si je fais un log.readlines puis un for ligne in log car c'est trop long

    Une fois que j'ai viré les espaces je voudrais rechercher une partie dans un élément puis sortir cet élément

    genre je cherche 2233 dans log

    et il me sort 112233

    mais je ne désire pas analyser chaque ligne une après l'autre avec un for c'est trop long car 100 lignes à analyser

    Merci de votre aide

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

    Pour la 1ère question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    log = [ "11 22 33", "44 55 66", "77 88 99 00" ]
     
    res = map(lambda x: x.replace(' ', ''),log)
     
    print res
    ['112233', '445566', '77889900']
    Tyrtamos

  3. #3
    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 salut.
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    li = [1,2,3,4,5,6,7,89]
    x= li.readlines()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> 
    Traceback (most recent call last):
      File "E:/Python/Essais Python/essai bete.py", line 2, in <module>
        x= li.readlines()
    AttributeError: 'list' object has no attribute 'readlines'
    >>>
    Ce ne serait pas plutôt un fichier ton log ?



    2) « avec un for c'est trop long car 100 lignes à analyser » quoi !!?!?!?!?
    Même avec un for, j'en doute



    3) http://python.developpez.com/cours/D...ping_lists.php

    3.24

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    Merci

    oui je lance jusqu'a 10 thread qui analyse 100 lignes environ chacunes

    et sur ces lignes j'applique plein de chose

    sauf si je trouve ma ligne tout de suite dans analyser chaques lignes

    je regarde tout ca

    merci de votre aide en tout cas

  5. #5
    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
    Suite de mon post précédent pour la 2ème question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    res = ['112233', '445566', '77889900']
     
    ext = filter(lambda x: x.find("2233")>=0, res)
     
    print ext
    ['112233']
    Si on est sûr qu'il n'y a qu'une seule réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ext = filter(lambda x: x.find("2233")>=0, res)[0]
     
    print ext
    '112233'
    Tyrtamos

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    trop fort ca merci

    je testerais tout ca et te tiens au courant

    grand merci à toi

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    Encore une petite chose

    dans le même ordre d'idée il faut que je mette chaque élément d'une liste en majuscule mais sans scanné chaque ligne

    string.upper ne s'applique pas sur une liste

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = map(string.upper,log)
    ca à l'air bon ca non ?

    pourquoi si je mets le lambda comme dans replace ca marche pas ?

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

    La 1ère fonction devient alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res = map(lambda x: x.replace(' ', '').upper(),log)
    Ou, si tu veux le faire dans une 2ème étape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res2 = map(lambda x: x.upper(),res)
    Ce que tu proposes marche aussi, à condition d'importer le module string. Mais ça ne marche pas de la même façon. La 1ère fonction de map doit prendre comme paramètre chacun des éléments de la liste, ce qui n'est pas le cas de x.upper(). D'où la nécessité de passer par lambda. Tu aurais pu aussi créer une fonction du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def Upper(x):
        return x.upper()
     
    print map(Upper,log)
    Tyrtamos

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    ou

    chapeau !!

  11. #11
    Membre confirmé
    Avatar de Zorro
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Par défaut Attention, map est vouée à disparaître
    Salut,

    Attention, map est vouée à disparaître !

    Z

  12. #12
    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 Zorro,

    Tu as tout à fait raison, mais il ne voulait pas de "for ...".

    Voilà ma proposition sans map ni lambda ni filter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    log = ['qq 11 22 33', '44 55 66 aa', '77 88 99 00 bb']
     
    res = [x.replace(' ', '').upper() for x in log]
     
    print res
    ['QQ112233', '445566AA', '77889900BB']
     
    ext = [x for x in res if x.find("2233")>=0]
     
    print ext
    ['QQ112233']

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 60
    Par défaut
    Merci enormement pour votre aide tout est ok

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

Discussions similaires

  1. [VBA-Excel] Effectuer une recherche dans une liste view
    Par Miles Raymond dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2006, 17h21
  2. Imposer une methode Equals pour une recherche dans une List
    Par petozak dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/10/2006, 10h41
  3. Réponses: 2
    Dernier message: 07/07/2006, 10h00
  4. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  5. Recherche dans une liste non trié
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 13/09/2004, 13h56

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