Re: Problem bei Wertübergabe in Funktion
Verfasst: Donnerstag 26. April 2012, 15:20
@BlackJack, habe mich mit Deinem Konstrukt beschäftigt, welches ja auch funktioniert.
Wenn ich aber versuche dieses zu erweitern, um weitere Abfrage-Definitionen verwenden zu können, bekomme ich das nicht so hin, daß es 100-prozentig funktioniert.
Deshalb habe ich mein Konstrukt verwendet und teilweise Deine Vorschläge integriert.
Der erste Teil mit dem ich dann das Konstrukt steuere, sieht so aus:Und das Konstrukt dazu so:
Wenn ich aber versuche dieses zu erweitern, um weitere Abfrage-Definitionen verwenden zu können, bekomme ich das nicht so hin, daß es 100-prozentig funktioniert.
Deshalb habe ich mein Konstrukt verwendet und teilweise Deine Vorschläge integriert.
Der erste Teil mit dem ich dann das Konstrukt steuere, sieht so aus:
Code: Alles auswählen
from b_test import get_inhalt, get_stueck
# suche nach 'GEPACKT ZU [Zahlenwert]' (Einheiten) 048
get_inhalt(base_daten_path, 3, 6, 7, r"GEPACKT ZU ?(?P<VALUE>\d*\.?\d*).?\s*(?P<UNIT>\w*)")
# suche nach 'INHALT: [Zahlenwert]*ST' (Stück) 048
get_inhalt(base_daten_path, 3, 6, 7, r"INHALT: ?(?P<VALUE>\d*\.?\d*).?ST\s*(?P<UNIT>\w*)")
# suche nach 'INHALT: [Zahlenwert]*ET' (Etiketten) 048
get_inhalt(base_daten_path, 3, 6, 7, r"INHALT: ?(?P<VALUE>\d*\.?\d*).?ET\s*(?P<UNIT>\w*)")
# suche nach 'INHALT: [Zahlenwert]*BL' (Blatt) 048
get_inhalt(base_daten_path, 3, 6, 7, r"INHALT: ?(?P<VALUE>\d*\.?\d*).?BL\s*(?P<UNIT>\w*)")
# suche nach 'VE*[Zahlenwert]' (VE=123, VE123) 028
get_inhalt(base_daten_path, 3, 6, 7, r"VE(?P<VALUE>\d*)\s*(?P<UNIT>\w*)")
# suche nach '[Zahlenwert]*ST' (Stück) 028
get_inhalt(base_daten_path, 3, 6, 7, r"(?P<VALUE>\d*)ST\s*(?P<UNIT>\w*)")
# suche nach '[Zahlenwert]*ST' (Stück) 120
get_inhalt(base_daten_path, 3, 6, 7, r"(?P<VALUE>\d*\.?\d*).?ST\s*(?P<UNIT>\w*)")
# suche nach '[Zahlenwert]*BL' (Blatt) 120
get_inhalt(base_daten_path, 3, 6, 7, r"(?P<VALUE>\d*)BL\s*(?P<UNIT>\w*)")
#
# Wenn VE ist STÜCK und Inhalt ist nicht 1
get_stueck(base_daten_path, 6, 7)
Code: Alles auswählen
def get_inhalt(filename, beschreibung, ve, inhalt, suchmuster):
# RegExp, Verarbeitung von Inhaltsangaben
regexp = re.compile(suchmuster, re.U|re.I)
zaehler = 0
daten = set()
with open(filename, "r") as infile:
for row in my_reader(infile):
if row[ve] == 'VE' and row[inhalt] == '1':
zahlenwert = regexp.search(row[beschreibung])
if zahlenwert:
row[inhalt] = (zahlenwert.group('VALUE') or '1').replace('.', '')
if row[inhalt] != '1':
daten.add(tuple(row))
zaehler += 1
else:
daten.add(tuple(row))
else:
daten.add(tuple(row))
elif row[ve] == 'STÜCK':
zahlenwert = regexp.search(row[beschreibung])
if zahlenwert:
row[inhalt] = (zahlenwert.group('VALUE') or '1').replace('.', '')
if row[inhalt] != '1':
row[ve] = 'VE'
daten.add(tuple(row))
zaehler += 1
else:
daten.add(tuple(row))
else:
daten.add(tuple(row))
else:
daten.add(tuple(row))
if zaehler > 0:
write_csv(filename, sorted(daten))
if zaehler > 1:
info(str(zaehler) + ' Datensätze aktualisiert')
else:
info(str(zaehler) + ' Datensatz aktualisiert')
else:
info('Überprüfung abgeschlossen.')
def get_stueck(filename, ve, inhalt):
zaehler = 0
daten = set()
with open(filename, "r") as infile:
for row in my_reader(infile):
if row[ve] == 'STÜCK' and row[inhalt] != '1':
row[inhalt] = '1'
daten.add(tuple(row))
zaehler += 1
else:
daten.add(tuple(row))
if zaehler > 0:
write_csv(filename, sorted(daten))
if zaehler > 1:
info(str(zaehler) + ' Datensätze aktualisiert')
else:
info(str(zaehler) + ' Datensatz aktualisiert')
else:
info('Überprüfung abgeschlossen.')