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 :

Regex pour extraire une valeur textuel


Sujet :

Python

Vue hybride

daniel1985 Regex pour extraire une... 27/09/2017, 16h25
Fifan31 Bonjour daniel1985, Tu... 27/09/2017, 16h51
daniel1985 Je vous remercie énormément... 27/09/2017, 17h09
DonKnacki Pour ce genre de chose, j'ai... 27/09/2017, 17h47
fred1599 Je pense que cette fonction... 27/09/2017, 18h23
jurassic pork hello, Le code à Fifan31... 01/10/2017, 00h27
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut Regex pour extraire une valeur textuel
    Bonjour à vous,

    Je cherche à extraire une partie d'un contenu textuel via les regex.

    Le contenu a extraire est défini par un délimiteur de fin qui est le retour en ligne + une ou deux chaines de caractère + "=".

    Pour cela, je pense que le regex adéquat est comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    End_delimiter= "\n(.)+="
    Par contre, je ne sais pas trop quelle fonction me faut utiliser pour extraire ce contenu, notamment celle qu ise trouve avant de trouver l'expression définit dans l'expression régulière.

    Supposant que j'ai ce texte comme entré:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    blablblablbablba(kjdjhç8982982)
    hklfhluoylhzmlkjoef
    key7 = blab blabnlbla
    Je dois ressortir le texte qui est juste avant cette experssion, qui dans ce cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    blablblablbablba(kjdjhç8982982)
    hklfhluoylhzmlkjoef
    Je vous remercie d'avance pour votre réactivité.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour daniel1985,

    Tu devrais trouver ce que tu veux du côté de re.split:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import re
    pattern=r'\n.+='
    re.split(pattern, text)[0]

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Je vous remercie énormément pour votre réponse rapide.

    J'ai déjà essayé avec le code que vous venez de me poster et j'avais rien comme résultat !!

    J'ai essayé même ce regex en me disant qu'il me faut définir même les retour en ligne mais malheureusement toujours en vain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pattern = r'(.)+(\n)+(.)+='

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Pour ce genre de chose, j'ai tendance à utiliser la méthode group
    https://docs.python.org/2/library/re.html#match-objects

  5. #5
    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
    Je pense que cette fonction devrait le faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def check_line(line, filter):
        if not any(char in line for char in filter):
            return True
        return False
     
    if __name__ == "__main__":
        s = """blablblablbablba(kjdjhç8982982)
    hklfhluoylhzmlkjoef
    key7 = blab blabnlbla"""
     
        lines = s.splitlines()
        letters = "\n+="
        print('\n'.join((line for line in lines if check_line(line, letters))))
    à tester sur plusieurs lignes à filtrer selon les caractères.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Je vous remercie enormément pour votre réponse.

    En effet, j'ai essayé d'arrêter la fonction dés quelle trouve une ligne qui ne colle pas avec l'expression définie (définie par 'lettres' dans notre cas) mais en vain. Dans la version actuelle, la fonction retourne tous les phrases qui ne contiennent pas l'expression définie alors que je cherche à extraire que les premiers lignes et dés quelle trouve une ligne qui ne colle pas la boucle doit s'arrêter.

    Merci d'avance pour votre retour.

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 219
    Par défaut
    hello,
    Citation Envoyé par daniel1985 Voir le message
    Je vous remercie énormément pour votre réponse rapide.

    J'ai déjà essayé avec le code que vous venez de me poster et j'avais rien comme résultat !!

    J'ai essayé même ce regex en me disant qu'il me faut définir même les retour en ligne mais malheureusement toujours en vain.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pattern = r'(.)+(\n)+(.)+='
    Le code à Fifan31 fonctionne chez moi en python 3.6.0 :
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import re
     
    texte = """blablblablbablba(kjdjhç8982982)
    hklfhluoylhzmlkjoef
    key7 = blab blabnlbla"""
    pattern=r'\n.+='
    print(re.split(pattern, texte)[0])
    j'obtiens ceci :
    blablblablbablba(kjdjhç8982982)
    hklfhluoylhzmlkjoef
    Ami calmant, J.P

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/09/2012, 13h38
  2. Utilisation de ctypes pour extraire une valeur/un tableau
    Par XeO3n dans le forum Interfaçage autre langage
    Réponses: 1
    Dernier message: 04/07/2012, 00h33
  3. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  4. [Toutes versions] Extraire une valeur d'une ListBox pour l'afficher dans une cellule
    Par stid59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2009, 22h05
  5. Réponses: 1
    Dernier message: 19/08/2008, 21h13

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