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 :

Extraire du texte autour d'un mot selon des conditions précises [Débutant(e)]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Extraire du texte autour d'un mot selon des conditions précises
    Bonjour à tous,

    Je travaille sur une base de données et j'ai réussi à extraire du texte qui change à chaque entrée différente de paramètres, sur ce point là tout est ok, j'ai utilisé le module re pour délimiter une zone de recherche sauf que le texte est énorme et une seule partie m'intéresse à chaque fois.
    Par conséquent, j'aimerais trouver la façon de d'extraire autour d'un mot, par exemple à partir de la majuscule (début de phrase) jusqu'au point parmi les "phrases" contenant le mot "numération" dans l'extrait ci-dessous :

    * Surveillance hématologique :
    - 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.Quand le taux de polynucléaires neutrophiles est inférieur à 1500/mm3, les résultats doivent être confirmés.
    - Dans le cas d'une neutropénie (< 1500 neutrophiles /mm3) ou d'une thrombopénie (< 100000 plaquettes /mm3), il est nécessaire d'arrêter le traitement.. La ticlopidine ayant une demi
    -vie longue, tout patient interrompant le traitement dans les trois premiers mois suivant son instauration doit effectuer une numération
    - formule sanguine avec contrôle des cellules de la lignée blanche 2 semaines après l'arrêt du traitement.. Un contrôle sanguin, incluant le comptage des différents leucocytes et des plaquettes, doit être continué jusqu'à retour à des valeurs normales.
    *", '

    Il est possible que cela requière l'utilisation du module re à nouveau, mais j'ai du mal à comprendre les syntaxes/ explications que je trouve en ligne et dans mon livre ( Apprendre à programmer avec Python 3, oui je sais c'est cliché) il n'y a strictement rien sur le module re. Après je me trompe peut-être sur la méthode à utiliser, je viens de commencer python et je n'ai pas la prétention de connaître toutes les fonctionnalités.

    voici mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    request ="""SELECT distinct (..... requête SQL classique) ;"""
    db_cursor.execute(request)
    liste_de_resultats = db_cursor.fetchall()
     
    regexp = re.compile(r"-> Surveillance.*?->" , re.IGNORECASE | re.MULTILINE | re.DOTALL)
     
    for (txtpemg,) in liste_de_resultats:
      txtpemg2 = txtpemg.replace("\r","").replace("\n","")
      r = regexp.findall(txtpemg2)
      r2 = str(r).replace("->", "\n *").replace("-","\n "" -").replace("·","\n ·")
      print (r2)

    Merci pour l'aide si vous passez par là !

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    Salut.
    Ton programme m'a l'air compliqué. Tel que tu l'expliques, je comprends que tu cherches toutes les phrases contenant la chaîne "numération". J'aurais fait comme ça (j'ai commenté la regex) :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    >>> import re
    >>> s = """
    ... * Surveillance hématologique :
    ... - 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.Quand le taux de polynucléaires neutrophiles est inférieur à 1500/mm3, les résultats doivent être confirmés.
    ... - Dans le cas d'une neutropénie (< 1500 neutrophiles /mm3) ou d'une thrombopénie (< 100000 plaquettes /mm3), il est nécessaire d'arrêter le traitement.. La ticlopidine ayant une demi
    ... -vie longue, tout patient interrompant le traitement dans les trois premiers mois suivant son instauration doit effectuer une numération
    ... - formule sanguine avec contrôle des cellules de la lignée blanche 2 semaines après l'arrêt du traitement.. Un contrôle sanguin, incluant le comptage des différents leucocytes et des plaquettes, doit être continué jusqu'à retour à des valeurs normales.
    ... *", '
    ... """
    >>> patt = re.compile(r"""[A-Z][^\.]*? # majuscule suivie de n'importe quelle suite de caractères sauf un '.'
    ... numération # la chaîne recherchée
    ... .*?\. # suite de n'importe quel caractère puis un '.'""",
    ... re.DOTALL|re.MULTILINE|re.VERBOSE)
    >>> for idx, item in enumerate(patt.findall(s)):
    ...     print("{:<3d} {:s}".format(idx, item))
    ... 
    0   Surveillance hématologique :
    - 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.
    1   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.
    2   La ticlopidine ayant une demi
    -vie longue, tout patient interrompant le traitement dans les trois premiers mois suivant son instauration doit effectuer une numération
    - formule sanguine avec contrôle des cellules de la lignée blanche 2 semaines après l'arrêt du traitement.
    >>>

  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
    C'est ce que je voulais, merci !

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

Discussions similaires

  1. afficher des ecrans selon des conditions
    Par chamssou dans le forum SAP
    Réponses: 5
    Dernier message: 24/03/2011, 13h54
  2. afficher des ecrans selon des conditions
    Par chamssou dans le forum SAP
    Réponses: 1
    Dernier message: 24/03/2011, 12h35
  3. Réponses: 2
    Dernier message: 27/09/2010, 14h14
  4. Réponses: 13
    Dernier message: 22/07/2009, 14h36
  5. [SQL Server 8] fonction Max --- selon des conditions
    Par Baquardie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2006, 21h06

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