Python - 1 ligne de code
LsBender
-
heyquem Messages postés 759 Date d'inscription Statut Membre Dernière intervention -
heyquem Messages postés 759 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je reprends un programme codé en python qui modifie des fichiers .txt de logs
J'ai beau essayer j'arrive pas à comprendre ce que fait cette ligne:
Merci d'avance pour votre aide!
Je reprends un programme codé en python qui modifie des fichiers .txt de logs
J'ai beau essayer j'arrive pas à comprendre ce que fait cette ligne:
log = re.compile("(?P<date>.*)-(?P<time>.*)\|(?P<sourcefile>.*)\|(?P<linenb>.*)\|(?P<swmodule>.*)\|(?P<tracelevel>.*)\|(?P<description>.*)\|")
Merci d'avance pour votre aide!
A voir également:
- Python - 1 ligne de code
- Code ascii - Guide
- Partage de photos en ligne - Guide
- Code de déverrouillage oublié - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
1 réponse
Elle crée la représentation compilée d'un motif d'expression régulière.
Ce motif permet d'attraper 7 portions de chaînes: la première et la seconde doivent être séparées par un tiret dans le texte, les 5 autres doivent être chacune située entre deux caractères '|'
Etant donné l'absence de '?' après toutes les étoiles, les 5 chaînes entre caractères '|' sont les plus au bout vers la fin du texte analysé.
De même , le tiret qui sépare les deux premières portions est celui le plus vers la fin du texte, les conditions sur les autres portions devant être respectées.
L'écriture (?P....) permet de définir un groupe nommé, c'est à dire qu'on pourra appeler la portion de chaîne captée par le group en question par un nom au lieu de seulement par un numéro. Il faut lire la doc.
Amuse toi à mettre des '?' après les étoiles et observe les modifications de résultat.
Sera plus clair avec des exmples:
print
print log.search(ss).group('description')</code>
donne
Ce motif permet d'attraper 7 portions de chaînes: la première et la seconde doivent être séparées par un tiret dans le texte, les 5 autres doivent être chacune située entre deux caractères '|'
Etant donné l'absence de '?' après toutes les étoiles, les 5 chaînes entre caractères '|' sont les plus au bout vers la fin du texte analysé.
De même , le tiret qui sépare les deux premières portions est celui le plus vers la fin du texte, les conditions sur les autres portions devant être respectées.
L'écriture (?P....) permet de définir un groupe nommé, c'est à dire qu'on pourra appeler la portion de chaîne captée par le group en question par un nom au lieu de seulement par un numéro. Il faut lire la doc.
Amuse toi à mettre des '?' après les étoiles et observe les modifications de résultat.
Sera plus clair avec des exmples:
import re log = re.compile("(?P<date>.*)-(?P<time>.*)\|" "(?P<sourcefile>.*)\|" "(?P<linenb>.*)\|" "(?P<swmodule>.*)\|" "(?P<tracelevel>.*)\|" "(?P<description>.*)\|") ss = '12345|4578|54127|abcd-ef-gh|sourci|linini|modudu|trac|descriptu|finini' print log.search(ss).groups() ss = '12345|4578|54127|abcd-ef-gh|sourci|linini|modu-du|trac|descr-iptu|ALAFIN' print log.search(ss).groups()
print log.search(ss).group('description')</code>
donne
('12345|4578|54127|abcd-ef', 'gh', 'sourci', 'linini', 'modudu', 'trac', 'descriptu') ('12345|4578|54127|abcd-ef', 'gh', 'sourci', 'linini', 'modu-du', 'trac', 'descr-iptu') descr-iptu