S'il vous plaît me aider avec ce programme pour analyser un fichier dans un fichier XML

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

  •  19-09-2019
  •  | 
  •  

Question

Pour analyser un fichier texte d'entrée et générer un) un fichier XML et b) un fichier SVG (XML aussi).

Le fichier texte d'entrée (input.txt) contient la description d'un certain nombre de produits de centres de distribution et les centres de stockage du pays. Chaque ligne décrit soit un centre de distribution unique (dcenter) ou un centre de stockage, chacun avec un certain nombre de propriétés; chaque nom de propriété (code par exemple) est séparé par sa valeur avec a =.

Exemple (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

La sortie désirée du programme:

Sortie 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>

S'il vous plaît me aider avec le programme. J'apprécie vraiment.

Était-ce utile?

La solution

Supposons que l'entrée se trouve dans la chaîne s; soit par cession directe ou de 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"""

Vous pouvez ensuite ceci:

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>"

Je ne sais pas pourquoi d2 est absent de votre sortie de l'échantillon; Je suppose que ce par erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top