Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Запись данных в xml

Есть список словарей вида: [{"first_name":"Ivan", "last_name":"Ivanov", "city":"Moscow"}, {"first_name":"Sergey", "last_name":"Sidorov", "city":"Sochi"}...] Мне нужно этот список записать в xml формат вида:
Ivan Ivanov Moscow ... ...
Как это реализовать, используя стандартные библиотеки python? Вот мой код:
import xml.etree.ElementTree as ET root = ET.Element('root') person = ET.SubElement(root,'person') a=[] # тот список for key in a: ET.SubElement(person,'first_name').text = key['first_name'] ET.SubElement(person,'last_name').text = key['last_name'] ET.SubElement(person,'city').text = key['city'] tree = ET.ElementTree(root) tree.write('xmlf.xml')
Но этот цикл неправильный, выход такой:
Ivan Ivanov Moscow Sergey Sidorov Sochi ...
Как его исправить?


Ответ

Исправил код в вопросе:
items = [ {"first_name": "Ivan", "last_name": "Ivanov", "city": "Moscow"}, {"first_name": "Sergey", "last_name": "Sidorov", "city": "Sochi"}, ]
import xml.etree.ElementTree as ET root = ET.Element('root')
for i, item in enumerate(items, 1): person = ET.SubElement(root, 'person' + str(i)) ET.SubElement(person, 'first_name').text = item['first_name'] ET.SubElement(person, 'last_name').text = item['last_name'] ET.SubElement(person, 'city').text = item['city']
tree = ET.ElementTree(root) tree.write('xmlf.xml')
Результат (с добавлением отступов):
Ivan Ivanov Moscow Sergey Sidorov Sochi

Комментариев нет:

Отправить комментарий