我正在处理一个大型的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'}
非常抱歉,由于涉及敏感信息,我无法分享更多的输出内容。
dict_nested
数据吗? - kederracdict_nested
看起来与dict_flat
相似,我认为将dict_nested
展平可能是不必要的。 - Aaron England