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: Processeur par lots (multiples expressions régulières pour rechercher et remplacer des fichiers)


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut REGEX: Processeur par lots (multiples expressions régulières pour rechercher et remplacer des fichiers)
    bonjour. Supposons que j'ai 6 ou 10 formules d'expression régulière pour rechercher et remplacer. Par example. 2 premières expressions régulières*:

    Search: <title>.*\|\K(.*)(</title>)
    Replace by:\x20 Test \x20\2

    Search: <em>.*\|.*</em>)(</title>)
    Replace by: \x20\2

    et cetera,. Le code Python doit exécuter ces regex, dans l'ordre que je choisis, et pouvoir toujours ajouter une nouvelle regex. Mais pour regex, vous devez également considérer l'option .matches newsline

    Mais si je veux faire 3 remplacements de regex, un par un dans l'ordre que je veux, dans certains fichiers .txt, comment puis-je le faire ?

    C'est un point de vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import re
    s = '(zyx)bc'
    print (re.findall(r'(?<=\()\w+(?=\))|\w', s))
    ['zyx', 'b', 'c']

  2. #2
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import re
     
    regexes = {
        r'regex1': r'string1',
        r'regex2': r'string2'
    }
     
    for k, v in regexes.items():
        print(re.sub(k, v, 'string from file'))
    --------

    J'ai fait un code, mais il me donne une erreur


    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
    import re
    path = "D:/11"
     
    def listdir(dir):
        filenames = os.listdir(dir)
        for files in filenames:
            print(files)
     
    listdir(path)
     
     
    extensie_fisier = ".html"
     
    regexes = {
        r'<title>.*\|\K(.*)(</title>)': r'Bebe',  #  First regex             r'regex1': r'string1'
        r'^<html.*$': r'fff'                      #  Second regex          r'regex1': r'string1'
    }
     
    for k, v in regexes.items():
        print(re.sub(k, v, 'text'))
     
     
    with open("*.html", mode="w") as file:  # See note 2.
        contents = file.write(f"{extensie_fisier.text}")
     
    print("DONE !")

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    La séquence d'échappement \K n'est pas supportée par le module re. Je ne vois pas trop ce que tu cherches à faire mais utiliser un parser html et extraire les éléments qui t'intéressent pour recomposer un nouveau document est peut-être une option à envisager moins hasardeuse que d'attaquer du html comme une chaîne quelconque.

  4. #4
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    La séquence d'échappement \K n'est pas supportée par le module re. Je ne vois pas trop ce que tu cherches à faire mais utiliser un parser html et extraire les éléments qui t'intéressent pour recomposer un nouveau document est peut-être une option à envisager moins hasardeuse que d'attaquer du html comme une chaîne quelconque.
    Oui c'est possible. Je pense qu'il accepte \k mais il faut installer cette librairie https://pypi.org/project/regex/

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    hello,
    Citation Envoyé par CosmoKnacki Voir le message
    Je ne vois pas trop ce que tu cherches à faire mais utiliser un parser html et extraire les éléments qui t'intéressent pour recomposer un nouveau document est peut-être une option à envisager moins hasardeuse que d'attaquer du html comme une chaîne quelconque.
    j'avais proposé à Melcus d'utiliser BeautifulSoup pour parser du html ici mais elle? il? ne semble pas avoir suivi cette voie
    Ami calmant, J.P

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/06/2021, 09h58
  2. expression régulière pour reconnaitre une inclusion de fichier en c++
    Par cdm1024 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 27/11/2007, 13h49
  3. Expressions régulières pour rechercher dans le code
    Par Davboc dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/11/2007, 11h03
  4. Réponses: 2
    Dernier message: 20/03/2007, 17h58
  5. Expression Régulière pour float
    Par zebiloute dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2005, 14h03

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