python - 如何通过python统计文件xml中的每个项目
问题描述
我有很多这样的xml文件
<object>
<name>VaccumA</name>
</object>
<object>
<name>VaccumA</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>Vaccum</name>
</object>
<object>
<name>VaccumC</name>
</object>
我可以数名字但我不能数每个类型
from xml.dom.minidom import parseString
file = open('file.xml','r')
data = file.read()
file.close()
print (len(dom.getElementsByTagName('name')))
如何在所有文件 xml 中统计 VaccumA、VaccumB、VaccumC
解决方案
以下应该可以工作(每 1 个 xml)。你的工作是加载所有需要扫描和循环的 xml 文件。
from collections import defaultdict
import xml.etree.ElementTree as ET
xml = '''<r><object>
<name>VaccumA</name>
</object>
<object>
<name>VaccumA</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>VaccumB</name>
</object>
<object>
<name>Vaccum</name>
</object>
<object>
<name>VaccumC</name>
</object></r>'''
data = defaultdict(int)
root = ET.fromstring(xml)
for name in root.findall('.//name'):
data[name.text] += 1
print(data)
输出
defaultdict(<class 'int'>, {'VaccumA': 2, 'VaccumB': 3, 'Vaccum': 1, 'VaccumC': 1})
推荐阅读
- javascript - 如何将字符串添加到变量中
- sparql - 在 Protege 中使用 SPARQL 推断数据
- typescript - How to set input variables when debugging Azure DevOps custom Tasks in VS Code and TypeScript
- timestamp - 验证通过 CAN 总线发送的消息的时间戳
- python - How to use properties and setters the Pythonic way
- android - Android失败的gradle中的云功能依赖
- excel - 如何计算特定年份的运行月份?
- algorithm - 基于到达某个点所需的最小线段数量评估像素的算法,同时只穿过有效区域?
- javascript - 在javascript核心中添加指向图像的链接
- python - Get '_set' for a many-to-many relationship with a through