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 :

Extraction commentaire Fichier C++


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut Extraction commentaire Fichier C++
    Bonjour,

    je débute en python et je souhaiterai avoir des pistes pour écrire une expression régulière qui sera capable d'extraire des fonctions dont les paramètres sont rédigés sur plusieurs lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int setValeurs(int taille,
                                       long size,
                                                   char mot)
    Voici l'expression régulière actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [A-Za-z].*?[A-Za-z].*\(
    Ce qui pose problème, c'est comment extraire la fonction complète qui est rédiger sur plusieurs lignes.
    Mais il y aussi le fait que toutes les fonctions n'ont pas que trois paramètres d'entrée. Il se peut qu'il y en a plus de trois.


    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
    #!/usr/bin/env python
     
    import os
    import sys
    import re
     
    contenu = open("doc.cpp","r")
     
    fichier =contenu.read()
     
     
    REGEXP=r"[A-Za-z].*?[A-Za-z].*\("
     
    Extract = re.findall(REGEXP,fichier)
    contenu.close()
    print Extract
    Auriez vous des pistes à me proposer ?

    Je vous remercie par avance pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Par défaut
    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
     
    #!/usr/bin/env python
     
    contenu = open("doc.cpp","r")
    #line =contenu.readline()
    start=0
    stop=0
    while 1: 
    	line=contenu.readline()#
    	if '(' in line:
    			start=1
       			stop=0
    	if start>0 :
       			print line
    	if ')' in line:
      			 stop=1
    			 start=0
     
    	if not line:
            	break
     
    	pass
     
    contenu.close()
    L'idée est de lire le fichier ligne par ligne, et afficher uniquemment les lignes
    qui se trouvent entre '(' et ')'. Pas besoin d'epression reguliere du coup...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut
    Alors petit conseil je ne sais pas si tu connais Kodos mais qui dit regex dit kodos c'est un petit utilitaire fait en python qui permet des créer des expressions et de voir en temps réels ce qu'elles vérifient.

    Une info qui pourra peut être t'aider pour ton problème, il existe un flag que l'on peut activer DOTALL qui permet de dire : les retours à la ligne sont vérifiables par . <-- point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import re
     
    chaine = """int setValeurs(int taille,
                                       long size,
                                                   char mot)"""
     
    REGEXP=r"[A-Za-z].*?[A-Za-z].*\(.*\)"
     
    Extract = re.findall(REGEXP, chaine, re.DOTALL)
     
    print(Extract)

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut
    Je vous remercie pour vos réponses.
    En fait je vais parcourir le fichier contenant les commentaires lignes par lignes.
    Comme on sait qu'il pourra y avoir que 3 cas particuliers.
    /*-commentaire-*/ //Commentaire
    void getNum()

    J'appliquerai ensuite une expression régulière.
    Est ce plus difficile qu'utiliser une expression régulière le faisant ?

    Je vous remercie par avance.

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

Discussions similaires

  1. Extraction de fichiers depuis un .exe
    Par daladim dans le forum Autres Logiciels
    Réponses: 13
    Dernier message: 23/02/2011, 19h43
  2. pb dans l'extraction de fichier csv
    Par ricachu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/08/2006, 11h28
  3. Extraction de Fichier
    Par romrai dans le forum Access
    Réponses: 5
    Dernier message: 08/03/2006, 11h08
  4. Script extraction de fichier excel pr conversion en mySql ?
    Par Arvulis dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/01/2006, 18h34
  5. [MFC] commentaire fichier ini
    Par Gothico dans le forum MFC
    Réponses: 7
    Dernier message: 22/12/2003, 14h23

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