Ich habe eine CSV mit Werten, die ich in einer XML-Vorlage ersetzen möchte. Generierung XMLs für jede Zeile, die Dateinamen basierend auf Daten in derselben Zeile haben. Dies sind im Grunde nur Kopien der Vorlage mit einem Suchen und Ersetzen. Bis jetzt habe ich die Dateinamen erhalten, um richtig zu arbeiten, aber die XML-Datei ersetzt seine Daten nicht entsprechend der Zeile, sondern ersetzt nur Daten aus Zeile 3, Spalte 10. Ich suche nach einer Iteration durch eine Reihe von Zeilen und Erstelle für jede neue Dateien. Ich bin ratlos, was hier falsch läuft.Python - Iterieren durch CSV-Zeilen und ersetzen in XML
CSV Snippet:
COLUMN_K, COLUMN_L
K02496.ai, Test
K02550.ai, Test
K02686.ai, Test
K02687.ai, Test
Vorhandene XML-Vorlage Snippet
<gmd:resourceFormat>
<gmd:MD_Format>
<gmd:name>
<gco:CharacterString>COLUMN_K</gco:CharacterString>
</gmd:name>
Python-Code
import csv
exampleFile = open('U:\PROJECTS\Technical Graphics\metadata.csv')
exampleReader = csv.reader(exampleFile)
exampleData = list(exampleReader) #CSV as list
with open('U:\PROJECTS\Technical Graphics\COLUMN_K_edited.xml') as inputfile: #template XML
xml = inputfile.read()
with open('U:\PROJECTS\Technical Graphics\metadata.csv') as csvfile:
for row in reader(csvfile, delimiter=';'):
for i in range(5): #range of 5 rows
xml = xml.replace('COLUMN_K', exampleData[i+3][10])
#Only taking value from row 3, COLUMN_K- Need values from row 3 on
xml = xml.replace('COLUMN_L', exampleData[i+3][11])
#Only taking value from row 3, COLUMN_L- Need values from row 3 on
with open('U:\PROJECTS\Technical Graphics\XXX' + str((exampleData[i+3][10])) + ".xml", 'w') as outputfile:
#Correctly outputs multiple filenames based on COLUMN_K value
outputfile.write(xml) #writes multiple XMLs
Aktualisierung mit einem [minimalen, vollständigen, überprüfbaren Beispiel] (http://stackoverflow.com/help/mcve). So wie es ist, kann ich nicht nachvollziehen, was der Ein- und Ausgang sein soll. Zum Beispiel wird der Leser mit einem Semikolon-Trennzeichen geöffnet, aber in den Beispielen ist kein Semikolon vorhanden. Es gibt keine zu ersetzende 'COLUMN_E'. –
Entschuldigung. Ich werde von nun an diesem Protokoll folgen und das Beispiel jetzt bearbeiten. – MapZombie