我正在处理一个大型 xml 文件,我一直在尝试提取键和值。此文件中的信息非常敏感,因此我无法分享。我从使用xml图书馆开始。然而,经过几个小时的挫折,我发现了xmltodict图书馆。我使用这个库将我的 xml 转换为字典(相对于 xml,我更熟悉的东西)。
import xmltodict
# convert xml to dictionary
dict_nested = xmltodict.parse(str_xml)
既然 xml 是一个字典,我想将它展平,因为它有大量的级别(我不知道有多少级别),同时创建帮助我跟踪其对应值的路径的键名。因此,我尝试了:
from flatten_dict import flatten
# flatten dict_nested
dict_flat = flatten(dict_nested)
结果可能看起来像这样,但有更多层:
{'ID': '123',
'info': [{'breed':'collie'},
{'fur': [{'short':'no'},
{'color':[{'black':'no'},
{'brown':'yes'}]}]}]}
这很好用,因为我的键是显示层路径的元组。我的值要么是字符串(即我正在寻找的最终结果),要么是OrderedDict类型的列表。
由于每个列表中的每个字典都需要展平,而且我不知道这有多深,我试图找出一种以编程方式展平所有字典的方法,直到所有键对应于单个值(即,不是列表或字典) .
理想情况下,输出应如下所示:
{'ID':'123',
'info_breed':'collie',
'info_fur_short':'no',
'info_fur_color_black':'no',
'info_fur_color_brown':'yes'}
抱歉,由于敏感信息,我无法分享更多我的输出。
杨__羊羊
扬帆大鱼
相关分类