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 :

Test appartenance d'une partie d'élément à une liste


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut Test appartenance d'une partie d'élément à une liste
    Bonjour,

    J'ai cherché dans la FAQ une réponse à cette question qui doit être très simple mais je n'ai pas trouvé.
    Je voudrais tout simplement tester dans une boucle for l'appartenance d'un nom à une liste.
    Sauf que le nom testé n'est qu'une partie du nom auquel il est comparé dans la liste, et c'est là où je bloque. En effet, il est facile de tester l'appartenance d'un élément à une liste de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    list_noms=['-Test1-2017','-Test2-2017','-Test3-2018']
    for nom in list_noms:
    if nom in '-Test1-2017':
    print('Le test 1 est OK')
    Code qui me ressortira:
    Le truc c'est que moi je voudrais faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    list_noms=['-Test1-2017','-Test1-2018','-Test2-2017','-Test3-2018']
    for nom in list_noms:
    if nom ??(c'est là où je bloque) '-Test1-':
    print('Le test 1 est OK')
    Code qui dans ce cas devrait me ressortir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Le test 1 est OK
    Le test 1 est OK
    Merci pour votre aide !

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Par défaut
    Bonjour Hozem,

    Je pense que les saintes expressions régulières peuvent venir à ton secours.

    En python, il te suffira d'importer 're' (Regular Expression) et ensuite utiliser la fonction 'match' du module 're' pour vérifier si une chaîne de caractères coïncide avec un schéma (pattern):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import re
    re.match(pattern, string)
    re.match retournera 'None' si le pattern ne correspond pas et un objet "match" dans le cas contraire.

    Dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import re
    list_noms=['-Test1-2017','-Test2-2017','-Test3-2018']
    for nom in list_noms:
        if re.match('^.*\-Test1\-.*$', nom):
            print('Le test 1 est OK')
    Comme pattern, j'ai mis "^.*\-Test1\-.*$" qui se traduit grossièrement par "Au début il y a n'importe quel caractère dans n'importe quelle quantité puis littéralement "-Test1-" puis n'importe quel caractère dans n'importe quelle quantité puis la fin".
    Les antislashs devant les tirets sont là pour les échapper car les tirets sont utilisés en regex pour donner un intervalle.

    Je t'invite te renseigner sur les expressions régulières, c'est un outil très puissant et qui peut te simplifier la vie pour beaucoup de choses.
    Et temps que j'y suis, si tu veux tester des expressions régulières sans mettre en place de code, je te conseille le site regex101 qui aura aussi l'avantage de t'expliquer ton pattern point par point (volet en haut à droite).

    En espérant t'avoir été utile, floatNone.

    P.S. : Pense à indenter ton code quand tu le publies, c'est plus simple pour les autres.

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 491
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    list_noms=['-Test1-2017','-Test1-2018','-Test2-2017','-Test3-2018']
     
    for nom in list_noms:
        if '-Test1-' in nom:
            print(nom)
    Résultat :
    -Test1-2017
    -Test1-2018
    ?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2017
    Messages : 12
    Par défaut
    Comme quoi c'était vraiment très simple.

    Merci à vous.

    Résolu

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

Discussions similaires

  1. [Débutant] Somme d'une partie des éléments d'une matrice
    Par pa243 dans le forum MATLAB
    Réponses: 5
    Dernier message: 30/05/2015, 20h39
  2. [DisplayTag] Affichage d'une partie des éléments d'une liste sur un critère
    Par jaguars_s dans le forum Taglibs
    Réponses: 4
    Dernier message: 30/07/2010, 19h15
  3. Comment faire une partie fixe et une partie variable ?
    Par bassiste dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/06/2008, 16h45
  4. Chercher une donnée avec seulement une partie de l'élément
    Par Nadiya dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/05/2008, 19h25
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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