Bitte helfen Sie mir mit diesem Programm eine Datei in eine XML-Datei zu analysieren

StackOverflow https://stackoverflow.com/questions/1511950

  •  19-09-2019
  •  | 
  •  

Frage

eine Eingabetextdatei analysieren und erzeugt a) eine XML-Datei und b) eine SVG (auch XML-Datei).

Die Eingabetextdatei (input.txt) enthält die Beschreibung einer Reihe von Produkten Verteilzentren und Lagerzentren im ganzen Land. Jede Zeile beschreibt entweder ein einzelnes Verteilungszentrum (dcenter) oder ein Speicherzentrum, die jeweils mit einer Anzahl von Eigenschaften; jeder Eigenschaftsname (Code zum Beispiel) durch seinen Wert mit a = getrennt ist.

Beispiel (input.txt)

dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1

Die gewünschte Ausgabe des Programms:

Ausgang 1

<?xml version="1.0"?>
<dcenters>
<dcenter code="d1">
<loc> San Jose </loc>
<x> 100 </x>
<y> 100 </y>
<ctype> ct1 </ctype>
</dcenter>
<storage code="S1">
<locFrom> d1 </locFrom>
<x> 150 </x>
<y> 150 </y>
<rtype> rt1 </rtype>
</storage>
<storage code="S2">
<locFrom> d1 </locFrom>
<x> 50 </x>
<y> 200 </y>
<rtype> rt1 </rtype>
</storage>

Bitte helfen Sie mir mit dem Programm. Ich werde wirklich zu schätzen wissen.

War es hilfreich?

Lösung

Angenommen, der Eingang in String s ist; entweder durch direkte Zuordnung oder von file.read:

s="""dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1"""

Dann können Sie diese:

print '<?xml version="1.0"?>'
print "<dcenters>"
for line in s.splitlines():
    type, fields = line.split(":")
    params = fields.split(",")
    code = params[0].split("=")[1].strip()
    print '<%s code="%s">' % (type, code)
    for p in params[1:]:
        ptype, pvalue = p.strip().split("=")
        print '<%s> %s </%s>' % (ptype, pvalue, ptype)
    print '</%s>' % type
print "</dcenters>"

Nicht sicher, warum d2 von Ihrer Beispielausgabe fehlt; Ich gehe davon aus, dass die durch Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top