我需要将部分XML文件转换为一个python字典,以便将值存储在数据库中
XML
sample text here
image title
elemntry101
elemntry103
预期的python输出
'storage': [ {'description': 'sample text here', 'title': 'image title', 'dokcs': ['elemntry101', 'elemntry103']} }]
请建议如何使用elementtree进入此结构
我尝试使用这组代码
for data in xml_string.findall(".//"):
self.logger.error(f" {data.get('id')}:{data.findtext('datastore')}")
但我无法继续使用所需的结构。
更新:将多个节点作为迭代组时,需要获取动态值,因为它可以更改
title 1 loca woodapple orange carrot
title 2 apple orange carrot
也许这会对您有帮助。
import re
import xml.etree.ElementTree as ET
from pprint import pprint
tree = ET.parse('data.xml')
root = tree.getroot()
ids = [i.attrib['id'].split('.') for i in root.iter('unit')]
texts = [e.text for e in root.iter("datastore")]
xml_dict = {}
for id in ids:
id[0] = re.findall("^([a-zA-Z0-9]*)", id[0])[0]
id[1] = re.findall("^([a-zA-Z0-9]*)", id[1])[0]
xml_dict[id[0]] = []
for i, id in enumerate(ids):
xml_dict_keys = [list(i.keys())[0] for i in xml_dict[id[0]]]
if id[1] in xml_dict_keys:
for e in xml_dict[id[0]]:
if id[1] in list(e.keys())[0]:
e[id[1]].append(texts[i])
else:
xml_dict[id[0]].append({
id[1]: [texts[i]]
})
pprint(xml_dict)
输出:
{'storage': [{'description': ['sample text here']},
{'title': ['image title']},
{'dokcs': ['elemntry101', 'elemntry103']}]}
这篇关于在Python中将XML转换为词典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活!
[英文标题]Converting XML to dictionary in Python
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。