Meldungen kategorisieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
frosch
User
Beiträge: 10
Registriert: Donnerstag 17. September 2009, 09:17

Hallo,

ich habe ein Programm geschrieben, welches die Meldungen aus einem Logfile bestimmten Kategorien zu ordnet.
Jetzt habe ich aber gefeststellen müssen, dass einige Meldungen übrigbleiben, die nicht wirklich in eine Kategorie passen. Diese hätte ich gerne der Kategorie 13 zu gewiesen.
Ich habe versucht, das Ganze mit if und else zu lösen, aber das funktioniert leider nicht. In der Kategorie 13 sind nun Fehler, die schon einer anderen Katrgorie zugeordnet sind.
Bitte um Hilfe !

Danke im Voraus & LG
FROSCH

Code: Alles auswählen

  helplist = list()

  
  for line in in_f:
	text = line
	for line in text.split('\n'): 
		try:
			typ, nr, meldungstext = (x.strip() for x in line[1:-1].split('|'))
		except ValueError:
			pass
		else:
			if typ.isalnum() and nr.isdigit() and meldungstext:
				if meldungstext.rfind("Wert in Feld 245 ist ungleich der Summe ( +210 -215 -220 -230 -240 -243 )") >= 0:
					helplist.append(("1", typ, nr, meldungstext))
				if meldungstext.rfind("Keine Austrittsmaßnahme zu Mitteilung 123") >= 0:
					helplist.append(("3", typ, nr, meldungstext))
				if meldungstext.rfind("Wert in Feld KZIEL liegt unterhalb des zulässigen Bereichs ab 0.00") > 0:
					helplist.append(("9", typ, nr, meldungstext))
				if meldungstext.rfind("Wert in Feld KZSTF liegt unterhalb des zulässigen Bereichs ab 0.00") > 0:
					helplist.append(("10", typ, nr, meldungstext))
				if meldungstext.rfind("Wert in Feld KZ341 liegt unterhalb des zulässigen Bereichs ab 0.00") > 0:
					helplist.append(("11", typ, nr, meldungstext))
				if meldungstext.rfind("Kein Betrag in KZ210, aber Beträge in KZ245, KZ260 verschieden von 0.00") > 0:
					helplist.append(("12", typ, nr, meldungstext))
				if meldungstext.rfind("Kein gültiger Wert in Feld KZ341, KZ344") >= 0:
					helplist.append(("14", typ, nr, meldungstext))
				else:
					helplist.append(("13", typ, nr, meldungstext))


  helplist.sort()
  
  for key, group in groupby(helplist, lambda x: x[2]):
	for helplist in group:
		for element in helplist:
			out_f.write("%s |" % element)
		out_f.write("\n")
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

--> elif

Des weiteren würde ich den "if 'suchstring' in 'nachricht': ..." syntax der rfind()-Lösung vor ziehen.
Zuletzt geändert von Defnull am Donnerstag 26. November 2009, 11:14, insgesamt 1-mal geändert.
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Überleg mal worauf sich das else bezieht.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Außerdem ist das copy und paste Programmierung! Stichwort: Listen / Dictionaries benutzen :-)
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Vielleicht willst du dir auch mal das Modul ``logging`` anschauen.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Warum ist es manchmal `>= 0`und manchmal nur `> 0`? Ich wäre für `!= -1`. Und wieso überhaupt rfind? Damit's langsamer ist? Warum nicht einfach `in`?

Stefan
Antworten