fork download
  1. import re
  2. file=r'''5.10.80.69 - - [21/Jun/2019:15:46:20 -0700] "PATCH /niches/back-end HTTP/2.0" 406 15834
  3. 11.57.203.39 - carroll8889 [21/Jun/2019:15:46:21 -0700] "HEAD /visionary/cultivate HTTP/1.1" 404 15391
  4. 124.137.187.175 - - [21/Jun/2019:15:46:22 -0700] "DELETE /expedite/exploit/cultivate/web-enabled HTTP/1.0" 403 2606
  5. 203.36.55.39 - collins6322 [21/Jun/2019:15:46:23 -0700] "PATCH /efficient/productize/disintermediate HTTP/1.1" 504 13377
  6. 175.5.52.40 - - [21/Jun/2019:15:46:24 -0700] "POST /real-time HTTP/1.1" 200 2660
  7. 232.220.131.214 - - [21/Jun/2019:15:46:25 -0700] "GET /wireless/matrix/synergistic/expedite HTTP/1.1" 205 15081'''
  8. pattern = re.compile(r'''^(?P<host>\S+) +\S+ +(?P<user>\S+) +\[(?P<time>[\w:/]+ +[+-]\d{4})] +"(?P<request>\S+) +(?P<status>\S+) +(?P<size>\S+)" +(?P<someid>\d{3}|-) +(?P<someid2>\d+|-)(?: +"(?P<referrer>[^"]*)"(?: +"(?P<agent>[^"]*)")?)?$''')
  9.  
  10. log_data = []
  11.  
  12. for line in file.splitlines():
  13. m = pattern.search(line.strip())
  14. if m:
  15. log_data.append(m.groupdict())
  16.  
  17. print(log_data)
  18.  
  19.  
  20.  
Success #stdin #stdout 0.03s 9600KB
stdin
Standard input is empty
stdout
[{'host': '5.10.80.69', 'user': '-', 'time': '21/Jun/2019:15:46:20 -0700', 'request': 'PATCH', 'status': '/niches/back-end', 'size': 'HTTP/2.0', 'someid': '406', 'someid2': '15834', 'referrer': None, 'agent': None}, {'host': '11.57.203.39', 'user': 'carroll8889', 'time': '21/Jun/2019:15:46:21 -0700', 'request': 'HEAD', 'status': '/visionary/cultivate', 'size': 'HTTP/1.1', 'someid': '404', 'someid2': '15391', 'referrer': None, 'agent': None}, {'host': '124.137.187.175', 'user': '-', 'time': '21/Jun/2019:15:46:22 -0700', 'request': 'DELETE', 'status': '/expedite/exploit/cultivate/web-enabled', 'size': 'HTTP/1.0', 'someid': '403', 'someid2': '2606', 'referrer': None, 'agent': None}, {'host': '203.36.55.39', 'user': 'collins6322', 'time': '21/Jun/2019:15:46:23 -0700', 'request': 'PATCH', 'status': '/efficient/productize/disintermediate', 'size': 'HTTP/1.1', 'someid': '504', 'someid2': '13377', 'referrer': None, 'agent': None}, {'host': '175.5.52.40', 'user': '-', 'time': '21/Jun/2019:15:46:24 -0700', 'request': 'POST', 'status': '/real-time', 'size': 'HTTP/1.1', 'someid': '200', 'someid2': '2660', 'referrer': None, 'agent': None}, {'host': '232.220.131.214', 'user': '-', 'time': '21/Jun/2019:15:46:25 -0700', 'request': 'GET', 'status': '/wireless/matrix/synergistic/expedite', 'size': 'HTTP/1.1', 'someid': '205', 'someid2': '15081', 'referrer': None, 'agent': None}]