ich bin neu hier und melde mich, da ich momentan einfach nicht weiter komme...
Ich beschäftige mich gerade mit bibliothekarischen Daten, die meist als XML zur Verfügung stehen und möchte diese nach bestimmten Wörtern durchsuchen und die gefundenen Schnipsel in ein Dataframe schreiben. Ich habe dazu die XML-Datei importiert, habe ein Funktion für die Suche nach einem bestimmten XML-Element, mit der ich mir den Inhalt ausgeben lassen kann und bin jetzt an der Stelle, an der ich die gefundenen Ergebnisse gerne passend ausgeben lassen würde, aber irgendwo in meiner Schleife ist noch der Wurm drin bzw. fehlt mir einfach die Erfahrung und das Know-how...
Mit dem Code unten schaffe ich es, dass mir im passenden Unterfeld für Titel in den Bibliotheksdaten nach dem Wort "Analyse" gesucht wird und mit "print(coll)" spuckt er mir auch die Titel entsprechend aus. Soweit so gut. Soweit ich das ganze verstehe, eröffne ich oben eine Liste, in die ich weiter unten in der Schleife, wenn meine zweite Bedingung erfüllt ist (dass das Keyword auch im Titel enthalten ist), den jeweiligen Titel zufüge. Das funktioniert aber nicht wirklich, mir scheint, dass er zwar am Ende des Schleifendurchlaufs brav den Titel ausgibt, beim nächsten Durchlauf "coll" aber überschreibt und entsprechend den nächsten Titel ausgibt. An sich zwar nicht schlecht, aber eigentlich möchte ich die Titel erst sammeln und nach dem Durchlauf der Schleife ausgeben bzw. dann eben mit einer Liste oder idealerweise eben einem Dataframe weiterarbeiten können. Mir ist klar, dass in diesem Fall "print" dafür an der falschen Stelle steht. Wenn ich es allerdings vorziehe, gibt er mir auch die ganzen Leerfelder aus, in denen die Bedingung nicht erfüllt war.
Code: Alles auswählen
....
coll = []
keyword = 'Analyse'
for child in record.findall('{http://www.loc.gov/MARC21/slim}datafield'):
title = getSubfieldText(child, "245", "a")
if title:
has_title = True
content = str(title)
if keyword in content:
coll += [title]
else:
continue
print(coll)

Viele Grüße