使用python写一个统计一个文件夹内所有xml文件的标签以及出现次数
时间: 2024-01-08 19:04:04 浏览: 84
好的,可以使用Python自带的ElementTree库来解析xml文件。以下是一个可行的代码实现:
```python
import os
import xml.etree.ElementTree as ET
# 定义要统计的文件夹路径
folder_path = "path/to/folder"
# 定义一个字典来存储标签出现的次数
tag_counts = {}
# 遍历文件夹中所有的xml文件
for filename in os.listdir(folder_path):
if filename.endswith(".xml"):
# 解析xml文件
tree = ET.parse(os.path.join(folder_path, filename))
root = tree.getroot()
# 遍历xml文件中所有的标签
for elem in root.iter():
# 将标签名加入字典中,并增加计数
tag_counts[elem.tag] = tag_counts.get(elem.tag, 0) + 1
# 输出每个标签出现的次数
for tag, count in tag_counts.items():
print(f"{tag}: {count}")
```
这段代码会遍历指定文件夹中所有以`.xml`结尾的文件,统计每个标签出现的次数,并输出结果。
相关问题
将上面的代码修改,我需要看见xml文件中object的name和它出现的次数
可以在遍历xml文件中所有的标签时,判断当前标签是否为`object`,若是,则取出其`name`属性值,并将其加入字典中统计出现次数。以下是修改后的代码:
```python
import os
import xml.etree.ElementTree as ET
# 定义要统计的文件夹路径
folder_path = "path/to/folder"
# 定义一个字典来存储object的name出现的次数
name_counts = {}
# 遍历文件夹中所有的xml文件
for filename in os.listdir(folder_path):
if filename.endswith(".xml"):
# 解析xml文件
tree = ET.parse(os.path.join(folder_path, filename))
root = tree.getroot()
# 遍历xml文件中所有的object标签
for obj in root.findall('object'):
name = obj.find('name').text
# 将name加入字典中,并增加计数
name_counts[name] = name_counts.get(name, 0) + 1
# 输出每个name出现的次数
for name, count in name_counts.items():
print(f"{name}: {count}")
```
这段代码会遍历指定文件夹中所有以`.xml`结尾的文件,统计每个`object`标签中的`name`属性出现的次数,并输出结果。
增加一条输出,所有结果的个数之和
可以在遍历完所有xml文件后,再统计所有结果的个数之和,然后输出。以下是修改后的代码:
```python
import os
import xml.etree.ElementTree as ET
# 定义要统计的文件夹路径
folder_path = "path/to/folder"
# 定义一个字典来存储object的name出现的次数
name_counts = {}
# 遍历文件夹中所有的xml文件
for filename in os.listdir(folder_path):
if filename.endswith(".xml"):
# 解析xml文件
tree = ET.parse(os.path.join(folder_path, filename))
root = tree.getroot()
# 遍历xml文件中所有的object标签
for obj in root.findall('object'):
name = obj.find('name').text
# 将name加入字典中,并增加计数
name_counts[name] = name_counts.get(name, 0) + 1
# 输出每个name出现的次数
for name, count in name_counts.items():
print(f"{name}: {count}")
# 统计所有结果的个数之和
total_count = sum(name_counts.values())
print(f"Total count: {total_count}")
```
这段代码会遍历指定文件夹中所有以`.xml`结尾的文件,统计每个`object`标签中的`name`属性出现的次数,并输出每个`name`出现的次数,以及所有结果的个数之和。
阅读全文