python - 将 XML 数组读取到 python dict
问题描述
我正在尝试从具有所示结构的 XML 数据文件中读取数组。通过使用如何在 Python 中解析 XML?我收到以下没有我的数组。
<event id="1" settings="183" digitizer="LoremID" timestamp="42">
<triggershift samples="0"></triggershift>
<trace channel="0">2 4 1 2 1 23 5 4 2 4 2
</trace>
</event>
输出:
{'id': '1',
'settings': '183',
'digitizer': 'LoremID',
'timestamp': '42',
'triggershift': {'samples': '0'},
'trace': {'channel': '0'}}
有人对如何读取设置和数组有想法吗?
提前致谢。
解决方案
代码:
import xml.etree.ElementTree as ET
content = """<event id="1" settings="183" digitizer="LoremID" timestamp="42">
<triggershift samples="0"></triggershift>
<trace channel="0">2 4 1 2 1 23 5 4 2 4 2</trace>
</event>"""
root = ET.fromstring(content)
settings = {**root.attrib}
for el in root:
settings[el.tag] = {**el.attrib}
if el.text:
array = el.text.split(" ")
settings[el.tag]["value"] = array
输出:
{
"id": "1",
"settings": "183",
"digitizer": "LoremID",
"timestamp": "42",
"triggershift": {
"samples": "0"
},
"trace": {
"channel": "0",
"value": [
"2",
"4",
"1",
"2",
"1",
"23",
"5",
"4",
"2",
"4",
"2"
]
}
}
更新。
如果要将array
元素转换为int
,可以使用map()
:
settings[el.tag]["value"] = list(map(int, array))
推荐阅读
- python - 如何在 python 中的进程之间共享数据?
- alexa - 您可以在不经过意图的情况下将(状态)信息发布到 Alexa Skill 吗?
- c - 需要一个像 read() 这样的函数,它将整数数据读入缓冲区并获得与 read() 相同的缓冲区值
- javascript - 用于根据 HTML 文本框中的值输入日期的 JavaScript
- python - 如何获得关联对象的反向引用 - 即 user.follows() 和 user.followers()
- ios - Ionic iOS 13.2 错误,应用程序崩溃 - kill() 返回意外错误
- javascript - 无效语法未标记为(或未标记)?
- javascript - 用JS分页表时,Firebase数据库中的数据没有出现
- c# - 如何阻止newtonsoft json进行驼峰式处理
- java - 依赖注入的 Java 模块化