Пожалуйста, помогите мне с помощью этой программы преобразовать файл в XML-файл
-
19-09-2019 - |
Вопрос
Чтобы проанализировать входной текстовый файл и сгенерировать а) XML-файл и б) SVG (также XML)-файл.
Входной текстовый файл (input.txt) содержит описание ряда центров распределения и хранения продуктов по всей стране.Каждая строка описывает либо единый распределительный центр (dcenter), либо центр хранения, каждый из которых обладает рядом свойств;имя каждого свойства (например, код) разделяется на его значение символом =.
Пример (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
Желаемый результат работы программы:
Результат 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>
Пожалуйста, помогите мне с программой.Я буду действительно признателен.
Решение
Предположим, что входные данные представлены в виде строк;либо из прямого назначения, либо из 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"""
Тогда вы можете это:
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>"
Не уверен, почему d2 отсутствует в вашем примере вывода;Я предполагаю, что это по ошибке.