python循环读取XML文件并统计相应标签的个数

需求:
需要统计图片标注产生的XML文件的每个缺陷个数,同时还要将xml文件中标注错误的缺陷修改过来。
XML文件大致格式:在这里插入图片描述
每个XML或许有多个缺陷,都要统计出来。
在这里插入图片描述
总共672的XML文件。`

from lxml import etree
import numpy as np 
import pandas as pd 
import os
#封装一个解析XML文件的函数
def readXML(path):
	parser=etree.XMLParser(encoding="utf-8")
	#传入两个参数,一个是文件路径,一个是解析器
	tree=etree.parser(path,parser=parser)
	#查看解析出来的内容
	print(etree.tostring(tree,encoding='utf-8').decode('utf-8')
	#由于xpath返回的是列表,因此需要提取你需要的信息
	name=tree.path("//name/text()")
	#如果xml中有多个name标签,name都会得到,如果只想获得第一个name的值,写成name=tree.path("//name/text()")[0]
	return name

#封装一个循环遍历xml文件名的函数
def findAllFile(base):
	for root ,ds,fs in os.walk(base):
		for f in fs:
			yield f

def main():
	base='你需要遍历的文件夹路径‘
	#用一个数组去存放遍历出来的文件名,方便后续传入readXML函数
	a=[]
	for i in findAllFile(base):
		a.append[i]
		print(a)
		return a
#主函数
if __name__=='__main__':
	a=main()
	n=[]
	#将文件名循环输入到readXML函数解析
	for i in range(len(a)):
		try:
			name=readXML(a[i])
			#由于解析出来name有多个,所以再将name一个一个的取出来在加入数组,如果整个XMl文件name只有一个,那么不需要这步
			for j in range(len(name)):
				n.append(name[j])
		except:
			continue
	#统计数组中相同元素的个数
	a={}
	for i in n:
		if n.count(i)>0:
			a[i]=n.count(i)
	print(a)

运行结果
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值