Gibt es eine Möglichkeit, eine Protokolldatei mit Python [geschlossen] in Spalten in Spalten aufzuteilen.Python

Python-Programme
Anonymous
 Gibt es eine Möglichkeit, eine Protokolldatei mit Python [geschlossen] in Spalten in Spalten aufzuteilen.

Post by Anonymous »

Ich arbeite an einem Schulprojekt, in dem ich unnötige Daten aus einer Protokolldatei herausholen soll, und wir wurden angewiesen, Python zu verwenden.

Code: Select all

import pandas as pd
import pytz
from datetime import datetime
import re

def parse_str(x):
if x is None:
return '-'
else:
return x[1:-1]

def parse_datetime(x):
try:
dt = datetime.strptime(x[1:-7], '%d/%b/%Y:%H:%M:%S')
dt_tz = int(x[-6:-3])*60+int(x[-3:-1])
return dt.replace(tzinfo=pytz.FixedOffset(dt_tz))
except ValueError:
return datetime.now()

def parse_int(x):
return int(x) if x is not None else 0

data = pd.read_csv(
'Log_jeden_den.log',
sep=r'\s(?=(?:[^"]*"[^"]/")*[^"]*$)(?![^\\[]*\\])',
engine='python',
na_values='-',
header=None,
usecols=['ip', 'request', 'status', 'size', 'referer', 'user_agent'],
names=['ip', 'time', 'request', 'status', 'size', 'referer', 'user_agent'],
converters={'time': parse_datetime,
'request': parse_str,
'status': parse_int,
'size': parse_int,
'referer': parse_str,
'user_agent': parse_str})
print(data.head())
Das erhalte ich:

Grundsätzlich muss ich jede Teil des Log -Log -Log -Log -Log -Log -Log -Datei aufgeteilt. />
193.87.12.30 - - [19/FEB/2020: 06: 50 +0100] 200 7584 "-" "-"
193.87.12.30 - - [19/Feb/2020:06:25:55 +0100] "GET /navbar/navbar-ukf.html HTTP/1.0" 200 7584 "-" "-"
193.87.12.30 - - [19/FEB/2020: 06: 25: 56 +0100] "Get/Navbar/Navbar-UKF.html http/1.0" 200 7584 "-" "-"
193.87.12.30-[19/Februar/2020: 06: 57: 57 +0100 "" Gent Gent/Feb/2020: 06: 57 +0100 "" Gent /navbar/navbar-ukf.html http/1.0 "200 7584"-""-"
193.87.12.30--[19/FEB/2020: 06: 25: 49 +0100]" Get/http/1.1 "200 20925"-"-" "libwww-perl/6.08"
23.100.232.233 - - [19/Feb/2020:06:25:49 +0100] "GET /media-a-marketing/dianie-na-univerzite/kalendar-udalosti/815-den-otvorenych-dveri-2018 HTTP/1.1" 200 26802 "-" "Mozilla/5.0 (kompatibel; MSIE 9.0; Windows NT 6.0; Trident/5.0; Trident/5.0) "
193.87.12.30 - - [19/FEB/2020: 06: 25: 46 +0100]" Get/http/1,1 "200 20925" - "

Code: Select all

usecols=[0, 3, 4, 5, 6, 7, 8]
Aber ich erhalte Fehler:

, um zu summieren. Ich muss die Protokolldaten auf Spalten aufbrechen. Mein Code macht das etwas, aber falsch. Es schafft die Spalten, teilt aber nicht die Daten zwischen ihnen auf, sondern bringt sie alle in die erste Spalte. Das Benennen der Spalten half nicht und markierte sie mit Zahlen ParserError. Ist es jedoch möglich? Vielen Dank für alle Ratschläge im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post