Seite 1 von 1

Regular-Expresions (re)

Verfasst: Dienstag 24. Januar 2006, 16:52
von JanDMC
Moin Leute,

Ich hab mir sagen lassen, das man mit regular expressions der gut log-Datei "zerstückeln" kann z.B. Nun benötige ich diese Funktion auch, hab jedoch fast kein Plan wie das abläuft. Könnte mir jemand einen Link zu einer guten Doku posten oder noch besser auch einen kleinen Beispiel-Code posten. Danke


mfg JanDMC


mit dem modul 're' sollte es möglich sein..

Verfasst: Dienstag 24. Januar 2006, 17:03
von mitsuhiko

Code: Alles auswählen

blackbird@volverine:~$ python
Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
[GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> logfile = """
... [II] 16:34 asfsdag sgsa gsdkg skgj kgj sagkjs gksadj gksagj sag
... [II] 16:35 asghajsdg hjashdg jashg jsahg jasdhgjas ghjasdhg
... [EE] 18:00 askdhgjasdhg jasdhg jsdahg jsadghjsda ghjsadgh
... [EE] 18:01 asdjhgjsa dhgjsdagjsda gjsadhg jasdhg jashg jasdhgjsad g
... [WW] 18:03 asdhg jasdhgjsaghas dghjas gasjgh jghasjgsajg asjgh
... [II] 18:32 sdajgh jsdagh sadgjhs adjghsa jdghasj gasjg
... """
>>> line_rule = re.compile(r'^\[([A-Z]{2})\]\s(\d{2}:\d{2})\s(.*?)$(?uism)')
>>> for line in line_rule.findall(logfile):
...     print line
...
('II', '16:34', 'asfsdag sgsa gsdkg skgj kgj sagkjs gksadj gksagj sag')
('II', '16:35', 'asghajsdg hjashdg jashg jsahg jasdhgjas ghjasdhg')
('EE', '18:00', 'askdhgjasdhg jasdhg jsdahg jsadghjsda ghjsadgh ')
('EE', '18:01', 'asdjhgjsa dhgjsdagjsda gjsadhg jasdhg jashg jasdhgjsad g')
('WW', '18:03', 'asdhg jasdhgjsaghas dghjas gasjgh jghasjgsajg asjgh')
('II', '18:32', 'sdajgh jsdagh sadgjhs adjghsa jdghasj gasjg ')
Für die Re Syntax schau am besten mal in die Docs. Die wird dort erklärt.

Verfasst: Dienstag 24. Januar 2006, 17:18
von JanDMC
Das ist schon ganz gut hier danke !