【发布时间】:2021-09-30 14:14:32
【问题描述】:
尝试从某个程序解析 xml-request 我有相当复杂的架构。它是 dict 的 dict 的 dict 的 dict。一些字典还包含字典列表。但是由于结构太不舒服,我的字典在其深度中包含很多“垃圾”词 "begin_" 和 "value"。
例如:
<depart>
<BEGIN_>
<id Value=""/>
<code Value=""/>
<name Value=""/>
<declNameList/>
</BEGIN_>
</depart>
变成了
{'depart': {'BEGIN_': {'id': {'Value': ''},
'code': {'Value': ''},
'name': {'Value': ''},
'declNameList': None}}}}}
我需要:
{'depart': {'id': '',
'code': '',
'name': '',
'declNameList': None}}
您能帮我使用全深度递归删除这些垃圾吗?
目前我设法通过使用将h = {'status': {'BEGIN_': {'statusCode': {'Value': '0'}}}} 转换为{'status': {'statusCode': {'Value': '0'}}}:
if 'Value' in h['status'].keys():
h['status'] = h['status']['Value']
if 'BEGIN_' in h['status'].keys():
h['status'] = h['status']['BEGIN_']
但我需要将这种过滤器应用于整个字典。
【问题讨论】:
-
您要删除的具体内容是什么?你的预期输出是什么?或者你只是想flatten the dictionary?
-
@NielGodfreyPonciano,我已经用示例更新了我的问题
-
在您的第一个示例中,您如何进行从 XML 到字典的转换?当然,您需要做的就是修改该代码以(有效地)跳过 BEGIN_ 元素
-
感谢您发布该链接。现在您知道需要修改哪些代码了。另请注意,当呈现在同一级别包含相同名称元素的 XML 数据时,该代码存在缺陷
标签: python dictionary parsing