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 :

recherche d'une chaine de caractere


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 30
    Points : 26
    Points
    26
    Par défaut recherche d'une chaine de caractere
    Bonjour,

    j'ai une recherche a faire en python et je n'y arrive pas...

    j'ai un texte de cette forme :
    "proc toto{test=par1,message=jeveuxcettechaine}"
    ou de cette forme
    "proc toto {test = par1, message = jeveuxcettechaine }"

    j'aimerais rechercher dans mon texte la chaine "jeveuxcettechaine"...

    merci par avance pour vos reponses !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index = tontexte.find("jeveuxcettechaine")

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    "jeveuxcettechaine" n'est pas constante !... ca pourrait etre "jeveuxcettechaineci" ou "jeveuxcettechainela" ou "jeneveuxriendutout"....


  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    c'est un exemple.... après tu remplaces la constante par une variable et ça devrait le faire.


  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    je crois que je me suis mal exprime

    mon texte peut etre de cette forme :
    "proc toto{test=par1,message=jeveuxcettechaineci}"
    ou de cette forme
    "proc toto {test = par1, message = jeveuxcettechainela }"
    ou encore de cette forme
    "proc toto {test = par1, message = je veux cette chaine avec des espaces }"

    bref dans le premier cas, je veux :
    jeveuxcettechaineci
    dans le deuxieme :
    jeveuxcettechainela
    et dans le troisieme :
    je veux cette chaine avec des espaces

    j'espere que c'est plus clair...

  6. #6
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Tu veux donc ce qu'il y a après message= ?
    Alors tu fais une recherche .find sur message puis sur le = qui suit puis sur le l'accolade fermante ( } )qui suivra et tu auras alors les 2 indices qui te permettront d'extraire donc string. Ne pas oublier de faire des strip (pour virer les espaces si nécessaire)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    autant pour moi..

    pas mieux que la solution de guigui. n'oublie pas de renseigner l'argument start de find() sinon il recherchera le = depuis le début de la chaine.

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Guigui_
    Tu veux donc ce qu'il y a après message= ?
    Alors tu fais une recherche .find sur message puis sur le = qui suit puis sur le l'accolade fermante ( } )qui suivra et tu auras alors les 2 indices qui te permettront d'extraire donc string. Ne pas oublier de faire des strip (pour virer les espaces si nécessaire)
    merci beaucoup... en fait je cherchais a faire tout d'un seul coup avec des expressions regulieres de la mort mais finallement c'est plus simple comme ca !...

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par newnew1
    merci beaucoup... en fait je cherchais a faire tout d'un seul coup avec des expressions regulieres de la mort mais finallement c'est plus simple comme ca !...
    Pourquoi "de la mort" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import re
    print re.compile("message\s?=\s?(.+?)}").search("proc toto {test = par1, message = jeveuxcettechainela }").group(1).strip()
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par GrandFather
    Citation Envoyé par newnew1
    merci beaucoup... en fait je cherchais a faire tout d'un seul coup avec des expressions regulieres de la mort mais finallement c'est plus simple comme ca !...
    Pourquoi "de la mort" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import re
    print re.compile("message\s?=\s?(.+?)}").search("proc toto {test = par1, message = jeveuxcettechainela }").group(1).strip()

    waouh !... et ben... bon je vais essayer de comprendre ce machin... merci beaucoup beaucoup !!!

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    bon j'ai a peu pres compris (a part group(1))

    quelle est la difference avec
    re.search("texte\s?=\s?", "proc toto {test = par1, message = jeveuxcettechainela }").end() ? (mis a part le })

    bref deux questions subsidiaire :
    1/ a quoi sert le group(1)
    2/ quelle est la difference entre re.compile.search et le re.search...

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    est ce qu'un admin peut mettre resolu dans le titre (vu que j'ai perdu mon pseudo newnew et que je n'arrive pas a faire la modification) merci !

  13. #13
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par newnew1
    quelle est la difference avec
    re.search("texte\s?=\s?", "proc toto {test = par1, message = jeveuxcettechainela }").end() ? (mis a part le })
    Je ne vois pas ce à quoi tu veux arriver avec cette commande...
    Citation Envoyé par newnew1
    1/ a quoi sert le group(1)
    Dans l'expression régulière, les parenthèses ne sont pas lues littéralement mais servent à désigner un groupe, en fait une série de caractères que l'on recherche par la méthode search(). Si la recherche aboutit, search() renvoie un objet MatchObjet, dont la méthode group() retourne la chaîne désignée par le groupe. On donne comme paramètre à group() l'indice du groupe à retourner (il peut y avoir plusieurs groupes dans une expression régulière).
    Citation Envoyé par newnew1
    2/ quelle est la difference entre re.compile.search et le re.search...
    compile() est une fonction du module re prenant en paramètre une chaîne désignant une expression régulière, et renvoyant un objet Expression régulière, dont on peut ensuite utiliser les méthodes search() et match().

    On peut aussi condenser la compilation, la recherche et l'extraction du groupe dans une seule expression comme celle que je t'ai donnée. Ce n'est en général pas très indiqué, car si search() échoue, il renvoie None, et la méthode group() va planter. Ce n'est donc à utiliser que si l'on est sûr que la recherche va donner quelque chose.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    merci !

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

Discussions similaires

  1. [Batch] Recherche d'une chaine de caractere en fonction de sa position
    Par viaseeyou dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 09/03/2014, 21h25
  2. recherche d'une chaine de caractere dans une autre
    Par myriamulrik dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 11/10/2009, 18h45
  3. [Debutant] recherche d'une chaine de caracteres
    Par stoukou dans le forum Langage
    Réponses: 9
    Dernier message: 21/08/2007, 18h48
  4. Réponses: 10
    Dernier message: 22/05/2006, 11h45
  5. Recherche dans une chaine de caractere
    Par sam.fet dans le forum Linux
    Réponses: 5
    Dernier message: 15/05/2006, 18h08

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