首页 > 解决方案 > 如何通过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

标签: pythonxml

解决方案


以下应该可以工作(每 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})

推荐阅读