Objekte (aus Dateien geparsed) gruppieren in eine Liste
Verfasst: Donnerstag 14. Februar 2013, 14:09
Hallo,
ich habe leider keine passende Lösung für mein spezielles Problem gefunden und würde mich freuen, hier mein Glück zu finden
Konkret habe ich folg. Problem:
Alle Dateien eines Ordners enthalten XML-Dateien, die alle eingelesen/geparsed werden sollen, was prinzipiell schon funktioniert. Je nach Dateiname, welcher die "Kategorie" der Obj. beschreibt, sollen die gelesenen XML-Objekte gruppiert, also am Einfachsten in eine Liste "kategorieX" gespeichert werden.
Die Dateien sehen z.B. wie folgt aus:
fahrzeugX1_markeY1_baujahrZ1.xml
fahrzeugX1_markeY1_baujahrZ2.xml => Die 3 XML-Objekte dieses 3er Blocks (Kategorie: selbes Fahrzeug und selbe Marke) sollen in eine Liste, da sie zur selben KategorieXY gehören
fahrzeugX1_markeY1_baujahrZ3.xml
...
fahrzeugX1_markeY2_baujahrZ4.xml
fahrzeugX1_markeY2_baujahrZ5.xml
fahrzeugX1_markeY2_baujahrZ6.xml
...
fahrzeugX2_markeY3_baujahrZ7.xml
Dafür habe ich erst mal eine Liste erstellt, die alle Dateinamen aufnimmt:
Abhängig vom Dateinamen wird dann die entsprechende Datei geparsed und in eine Liste/Gruppe gespeichert:
Da ich etliche Kategorien vorzunehmen habe, wäre diese Lösung zwar lauffähig aber extrem aufwändig und unflexibel.
Das eigentliche Problem ist aber, dass in den if-Verzweigungen noch Funktionsaufrufe implementiert werden müssen, wo als akt. Parameter "xmlObjList_KategorieX", also eine Liste mit gruppierten XML-Objekten übergeben werden müssen, also in jeder Verzweigung folgender Aufruf:
Mir wäre schon sehr geholfen, wenn ich die Liste "filesAll" mit allen Dateinamen/Strings umwandeln könnte in eine Liste mit XML-Objekten, die diesen Dateinamen entsprechen, also [xmlObjList_Kategorie1, xmlObjList_Kategorie2, ...], damit ich diese Liste der Funktion "funktion()" als Parameter übergeben kann.
Hoffe, die Beschreibung war nicht zu kompliziert und würde mich über Ideen freuen. Danke schon mal!
ich habe leider keine passende Lösung für mein spezielles Problem gefunden und würde mich freuen, hier mein Glück zu finden
Konkret habe ich folg. Problem:
Alle Dateien eines Ordners enthalten XML-Dateien, die alle eingelesen/geparsed werden sollen, was prinzipiell schon funktioniert. Je nach Dateiname, welcher die "Kategorie" der Obj. beschreibt, sollen die gelesenen XML-Objekte gruppiert, also am Einfachsten in eine Liste "kategorieX" gespeichert werden.
Die Dateien sehen z.B. wie folgt aus:
fahrzeugX1_markeY1_baujahrZ1.xml
fahrzeugX1_markeY1_baujahrZ2.xml => Die 3 XML-Objekte dieses 3er Blocks (Kategorie: selbes Fahrzeug und selbe Marke) sollen in eine Liste, da sie zur selben KategorieXY gehören
fahrzeugX1_markeY1_baujahrZ3.xml
...
fahrzeugX1_markeY2_baujahrZ4.xml
fahrzeugX1_markeY2_baujahrZ5.xml
fahrzeugX1_markeY2_baujahrZ6.xml
...
fahrzeugX2_markeY3_baujahrZ7.xml
Dafür habe ich erst mal eine Liste erstellt, die alle Dateinamen aufnimmt:
Code: Alles auswählen
filesAll = [ f for f in listdir(pfad) if isfile(join(pfad,f)) ] Code: Alles auswählen
for f in filesAll:
if 'fahrzeugX1_markeY1' in f:
xmlObjList_fahrzeugX1_markeY1.append( parse(pfad + f) ) # = Liste von parsed XML-Objekten derselben Kategorie fahrzeugX1_markeY1
elif 'fahrzeugX1_markeY2' in f:
xmlObjList_fahrzeugX1_markeY2.append( parse(pfad + f) )
usw.
Das eigentliche Problem ist aber, dass in den if-Verzweigungen noch Funktionsaufrufe implementiert werden müssen, wo als akt. Parameter "xmlObjList_KategorieX", also eine Liste mit gruppierten XML-Objekten übergeben werden müssen, also in jeder Verzweigung folgender Aufruf:
Code: Alles auswählen
funktion(xmlObjList_KategorieXY)Hoffe, die Beschreibung war nicht zu kompliziert und würde mich über Ideen freuen. Danke schon mal!