在Python中将XML转换为词典

发布时间:2022-09-18 / 作者:清心寡欲
本文介绍了在python中将XML转换为词典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将部分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 locawoodappleorangecarrot
title 2appleorangecarrot

推荐答案

也许这会对您有帮助。

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删除。