mein Konstrukt ist folgendes:
Code: Alles auswählen
my_reader = partial(csv.reader, delimiter='\t', quotechar='^')
def get_inhalt(filename, beschreibung, ve, inhalt):
# Überprüfung, ob Text vorhanden
# Wenn ja, Ausgabe der numerischen Werte
def find_digits(text):
try:
return re.search(regexp, text).groupdict()
except AttributeError:
return None
suchmuster = list()
with open(liste_inhalt_regexp_path, 'r') as infile:
for r in my_reader(infile):
suchmuster.append(r)
daten = []
with open(filename, "r") as infile:
for r in my_reader(infile):
for i in suchmuster:
# Verarbeitung von Inhaltsangaben
# RegExp
regexp = re.compile(string.join(i), re.U|re.I)
# Überprüfe, ob in Spalte beschreibung eine Inhaltsangabe enthalten ist
# Wenn a Wert enthält
# verarbeite diesen Wert
if find_digits(r[beschreibung]) and r[ve] == 'VE' and r[inhalt] == '1':
a = find_digits(r[beschreibung])
print(a)
b = a.items()
c = b[0][1]
d = b[1][1]
# Verarbeite Werte, die nicht
# dem Muster von d entsprechen
if c != '' and c != '1':
c = re.sub('\.', '', c)
# Ersetze die Werte für inhalt und ve
r[inhalt] = c
r[ve] = 'VE'
# Füge die Zeilen in die Liste daten ein
daten.append(tuple(r))
break
else:
r[inhalt] = '1'
daten.append(tuple(r))
break
else:
daten.append(tuple(r))
break
if len(daten) > 0:
daten = sorted(set(daten))
write_csv(filename, daten)
Hier versuche ich mit 'string.join(i)', Werte aus einer Liste zu nutzen.
Leider funktioniert dies so einfach nicht.
Wenn ich statt 'string.join(i)' den Wert direkt eingebe, z.B.:
Code: Alles auswählen
regexp = re.compile(r"INHALT: ?(?P<VALUE>\d*\.?\d*).?ST\s*(?P<UNIT>\w*)", re.U|re.I)
Hoffe Ihr könnt mir sagen, warum dies so nicht funktioniert und wie ich die Werte aus der Liste nutzen kann?
Grüße nobuddy