Bonjour.
Sur une ligne de type complexe, j'essaie de décomposer en groupes de données parlantes.
J'essaie avec les expressions régulières, mais pour l'instant ne parviens pas au résultat escompté.
Un exemple valant mieux qu'un long discours :
Je n'arrive pas à comprendre pourquoi ça ne marche pas.
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 import re line = '46.193.16.35 - hguelbeye [02/Nov/2017:00:59:35 +0100] "POST <a href="http://www.dalloz.fr:80/documentation/SessionHandler.svc/GetSessionLive?id=RECUEIL/IR/1996/0884&ctxt=0_YSR0MT1sZSBqdWdlIGV0IGFwcGxpY2F0aW9uIGRlIGxhIGxvaSBldHJhbmdlcmXCp3gkc2Y9cGFnZS1yZWNoZXJjaGU=&ctxtl=0_cyRwYWdlTnVtPTHCp3MkdHJpZGF0ZT1GYWxzZcKncyRzb3J0PcKncyRzbE5iUGFnPTIwwqdzJGlzYWJvPUZhbHNlwqdzJHBhZ2luZz1UcnVlwqdzJG9uZ2xldD3Cp3MkZnJlZXNjb3BlPUZhbHNlwqdzJHdvSVM9RmFsc2U=&nrf=0_TGlzdGU=" target="_blank">http://www.dalloz.fr:80/documentatio...nrf=0_TGlzdGU=</a> HTTP/1.1" 200 587' # Expression régulière pour les log. # On est censé récupérer ip, login, datetime, url, path regex = "^(?P<ip>(?:[0-9]{1,3}\.){3}[0-9]{1,3}) - " \ "(?P<login>[0-9a-zA-Z]*) .*" \ "\[(?P<datetime>.*)\].*connect\?session=.*&url=" \ "https?://w*\.?(?P<url>.[^/]*)/(?P<path>.*) HTTP/1.1.*" chain1 = re.compile(regex) match1 = chain1.match(line) if match1: url = match1.group("url") dt1 = match1.group("datetime") P_login = match1.group("login")
Quelqu'un a une idée ?
Une autre solution pour décomposer ce genre de ligne ?
Merci de votre aide ;-)
Partager