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 :

[REGEXP] Trouver des messages dans des fichiers


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut [REGEXP] Trouver des messages dans des fichiers
    Bonjour à tous,

    Je coince sur comment procéder pour chercher dans des fichiers.
    En effet, je veux passer tout le contenu d'un fichier en majuscule sauf les messages qu'il contient. Je m'explique, je peux avoir un fichier de type source.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x = 1
    y = 2
    if (x < y):
        print x + " est superieur a " + y
                + " donc j\'affiche \"ok\" "
    Ce que je veux obtenir est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    X = 1
    Y = 2
    IF (X < Y):
        PRINT X + " est superieur a " + Y
                + " donc j\'affiche \"ok\" "
    J'ai mis un exemple PYTHON mais cela pourrait être du Fortran, du C...
    Un message se caractérise donc par sa présence entre deux double quotes "...". Mais je veux pouvoir trouver ces messages sur plusieurs lignes et même trouver les \"...\".
    Je ne sais même pas par quoi commencer pour trouver la regexp. Pour ce qui s'agit de mettre en majuscule le reste aucun pb...

    Quelqu'un pour m'aider svp ?

    Merci d'avance les potos !
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    S'il faut quelque chose de solide, je conseille plutot de faire confiance au parser (module ast en python), parce qu'il y a des cas particuliers (par exemple, quid des commentaires? Et en python les chaines peuvent etre marquees soit avec des " ou des ' ou des """ ou des '''.)

    Pour des messages formattés uniquement comme tu les suggère ("), on peut essayer ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    re.search(r'((?<!\\)".*?(?<!\\))"',' print x + " est superieur a " + y')
    • negative look behind: les deux groupes (?<!\\)" ne matchent " que s'il ne sont pas precedes d'un \
    • Au milieu, le .*? est un non greedy permet de trouver tous les caracteres jusqu'au premier "
    • Ensuite, au lieu de faire un search, on peut faire un split (voir plus bas)

    Pour les messages sur plusieurs lignes, il faudrait tester la regex sur l'ensemble du texte avec le flag re.M, mais python n'accepte les messages multiligne qu'avec des triple '''. En supposant que c'est ce que tu veux quand meme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import re
    texte='''x = 1
    y = 2
    if (x < y):
        print x + " est superieur a " + y
                + " donc j\'affiche \\"ok\\" "
    '''
    re.split(r'((?<!\\)".*?(?<!\\))"',texte,re.M)
    et il suffit d'en prendre un sur deux: le premier element de la liste est du code, le deuxieme un message, etc.
    Mais encore une fois, la robustesse est a verifier...

  3. #3
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Merci beaucoup. J'ai procédé un peu comme vous m'avez dit. A ceci prêt que mon but est de pouvoir en fait passer tout un code en UPPERCASE ou lowercase sauf le contenu de message ou d'aide ou de doc(...), quelque soit le langage. Du coup, j'ai fait une liste avec des patterns de commentaire (double quote, simple quote, #, ^C, !...) selon le langage cible. Et ca marche donc merci encore et je passe en
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

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

Discussions similaires

  1. [Débutant] tracer des courbes avec des données dans plusieurs fichiers
    Par adila34 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/06/2015, 20h51
  2. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  3. Classer des messages dans des conversations
    Par maccormick dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 22/09/2010, 11h05
  4. Réponses: 3
    Dernier message: 15/05/2008, 16h06
  5. [debutant] preservation des espace dans un fichier xml
    Par Eric B dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 03/09/2003, 09h43

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