Seite 1 von 1

Meldungen kategorisieren

Verfasst: Donnerstag 26. November 2009, 11:05
von frosch
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")

Verfasst: Donnerstag 26. November 2009, 11:10
von Defnull
--> elif

Des weiteren würde ich den "if 'suchstring' in 'nachricht': ..." syntax der rfind()-Lösung vor ziehen.

Re: Meldungen kategorisieren

Verfasst: Donnerstag 26. November 2009, 11:12
von /me
Überleg mal worauf sich das else bezieht.

Verfasst: Donnerstag 26. November 2009, 11:24
von Hyperion
Außerdem ist das copy und paste Programmierung! Stichwort: Listen / Dictionaries benutzen :-)

Verfasst: Donnerstag 26. November 2009, 11:42
von ms4py
Vielleicht willst du dir auch mal das Modul ``logging`` anschauen.

Verfasst: Samstag 28. November 2009, 11:51
von sma
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