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 :

Regular Expression à partir d'un résultat de requête SQL


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Par défaut Regular Expression à partir d'un résultat de requête SQL
    Bonjour,

    Je m'initie actuellement au langage Python et je suis confrontée à un petit problème.

    Je souhaiterais à partir d'une requête SQL récupérer le résultat de la requête qui est une variable texte et pouvoir l'utiliser en python pour extraire une partie de texte, par exemple de "* texte" au prochain caractère "*".

    Mon code est ci-dessous (la requête SQL est bien valide, sur cela je n'ai pas de problèmes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Resultats:
      request =""" (emplacement de la requête SQL);"""
      def __init__(self): 
        self.db_cursor.execute(request)
        liste_de_resultats = self.db_cursor.fetchall()
     
    regexp = re.compile(r"Surveillance.*?FIN", re.IGNORECASE | re.MULTILINE | re.DOTALL)
    r = regexp.findall(r"\* Surveillance[\w].*")
    print (r)
    Mon code est très brouillon, mais je vous avoue que je me suis perdue avec les tutoriels déjà consultés et tous les essais... En tout cas je n'obtiens strictement rien en exécutant le script.
    Ce que j'aimerais obtenir c'est des extraits de texte à partir du texte obtenu à l'exécution de la requête SQL et je ne voies pas comment je peux réussir à travailler sur cela.

    Merci pour votre aide ou vos idées si vous passez par là

  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,

    Je ne comprends pas suffisamment ce que tu cherches. Peux-tu donner des exemples? Du genre: "texte" ==> "chaine à trouver dans le texte".

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Je ne comprends pas suffisamment ce que tu cherches. Peux-tu donner des exemples? Du genre: "texte" ==> "chaine à trouver dans le texte".
    Merci de m'avoir répondu.

    Pour expliciter mon message précédent je travaille sur une base de données, pour l'extraction tout est OK j'extrais du texte à partir d'une requête classique, ce qui me donne par exemple

    " -> Surveillance h�matologique :\r

    | \r
    +
    | - Il est n�cessaire de proc�der � des num�rations - formules sanguines (plaquettes comprises) au d�but du traitement puis toutes les deux
    semaines pendant les trois premiers mois de traitement. En cas de traitement inf�rieur � 3 mois, un contr�le de la num�ration-formule sanguine (plaquettes comprises) doit �tre effectu� dans les 15 jours qui suivent l'arr�t.\r "

    il y'a du texte avant et après Surveillance mais c'est uniquement les paragraphes commençant par "-> Surveillance" que je souhaite obtenir / extraire.

  4. #4
    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
    Qu'est-ce que tu entends par "paragraphe"? En principe, un paragraphe s'arrête à la fin de ligne.

    J'ai bien compris ce que tu extraits de ta base de données: c'est tout ce qu'il y a entre guillemets.

    Mais qu'est-ce que tu veux obtenir avec l'expression régulière? Est-ce que c'est " -> Surveillance hématologique :" ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Qu'est-ce que tu entends par "paragraphe"?
    Le paragraphe est le texte compris entre "-> Surveillance" et le prochaine caractère "->" donc toutes les lignes qui répondent à ce critère.

    Par exemple :
    "-> Surveillance hématologique

    (texte)

    -> Metabolisme "

    Dans ce cas je veux individualiser Surveillance hématologique et le texte qui suit jusqu'à -> Métabolisme (non compris).

  6. #6
    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
    Voilà une solution basique correspondant à ce que j'ai compris:

    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
    import re
     
    texte = """xxxx-> Surveillance hématologique
     
    n'importe quoi pour remplir la chaine
     
    -> Metabolisme xxxx"""
     
    motif = r"->.*->"
    motifcomp = re.compile(motif, re.DOTALL)
    result = motifcomp.search(texte)
     
    if result==None:
        print("pas trouvé")
    else:
        print(result.group(0))
    Ce qui affiche:

    -> Surveillance hématologique

    n'importe quoi pour remplir la chaine

    ->
    Cela correspond à: trouver une chaine comprise entre "->" et "->" avec n'importe quoi entre les 2. L'option re.DOTALL est nécessaire pour que le "n'importe quoi" puisse contenir des fins de ligne.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Par défaut
    Ok je comprend un peu mieux; j'ai finalement trouvé une solution car le texte que je souhaite extraire n'est pas toujours le même il est dynamique et inconnu surtout car c'est un résultat d'extraction.
    J'ai donc crée une variable contenant la liste de mes résultats, compilé le tout, crée une boucle FOR pour traiter chaque tuple de la liste et fais un findall sur les tuples il ne me reste qu'à trouver comment splitter le résultat du findall pour avoir des blocs délimités par les caractères choisis. Merci pour la piste

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

Discussions similaires

  1. [AC-2007] Filtre de forme à partir d'un résultat de requête
    Par c-load13 dans le forum Access
    Réponses: 2
    Dernier message: 02/07/2012, 08h41
  2. Fil d'ariane à partir d'un résultat de requête nested
    Par CaviarNAS dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2011, 19h18
  3. Réponses: 17
    Dernier message: 18/08/2011, 10h44
  4. Réponses: 5
    Dernier message: 08/01/2009, 09h05
  5. Différence de résultats entre requêtes SQL et Criteria
    Par titoudemtl dans le forum Hibernate
    Réponses: 3
    Dernier message: 07/08/2006, 09h30

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