Python如何实现xml格式转txt格式
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"Python如何实现xml格式转txt格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2026年11月02日Python如何实现xml格式转txt格式
本篇内容介绍了"Python如何实现xml格式转txt格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、前言
最近学习Yolo v5是遇见了个问题,找的数据集全是xml文件,VOC 的标注是 xml 格式的,而YOLO是.txt格式,那么问题就来了,手动提取肯定是不可能的,那只能借用程序解决咯。
2、分析xml、txt数据
这是xml树形结构

这是txt格式

总结:
1.提取object->name、bndbox->xmin,ymin,xmax,ymin
2.格式转化需要用公式转换
YOLO数据集txt格式:
x_center :归一化后的中心点x坐标
y_center : 归一化后的中心点y坐标
w:归一化后的目标框宽度
h: 归一化后的目标况高度
(此处归一化指的是除以图片宽和高)
VOC数据集xml格式
| yolo的四个数据 | xml->txt公式 |
|---|---|
| x_center | ((x_min+x_max)/2-1)/w_image |
| y_center | ((y_min+y_max)/2-1)/h_image |
| w | (x_max-x_min)/w_image |
| h | (y_max-y_min)/h_image |
3、转换过程
定义两个文件夹,train放xml数据, labels放txt数据。
代码解析:
import osimport xml.etree.ElementTree as ETimport iofind_path = './train/' #xml所在的文件savepath='./labels/' #保存文件class Voc_Yolo(object): def __init__(self, find_path): self.find_path = find_path def Make_txt(self, outfile): out = open(outfile,'w') print("创建成功:{}".format(outfile)) return out def Work(self, count): #找到文件路径 for root, dirs, files in os.walk(self.find_path): #找到文件目录中每一个xml文件 for file in files: #记录处理过的文件 count += 1 #输入、输出文件定义 input_file = find_path + file outfile = savepath+file[:-4]+'.txt' #新建txt文件,确保文件正常保存 out = self.Make_txt(outfile) #分析xml树,取出w_image、h_image tree=ET.parse(input_file) root=tree.getroot() size=root.find('size') w_image=float(size.find('width').text) h_image=float(size.find('height').text) #继续提取有效信息来计算txt中的四个数据 for obj in root.iter('object'): #将类型提取出来,不同目标类型不同,本文仅有一个类别->0 classname=obj.find('name').text cls_id = classname xmlbox=obj.find('bndbox') x_min=float(xmlbox.find('xmin').text) x_max=float(xmlbox.find('xmax').text) y_min=float(xmlbox.find('ymin').text) y_max=float(xmlbox.find('ymax').text) #计算公式 x_center=((x_min+x_max)/2-1)/w_image y_center=((y_min+y_max)/2-1)/h_image w=(x_max-x_min)/w_image h=(y_max-y_min)/h_image #文件写入 out.write(str(cls_id)+" "+str(x_center)+" "+str(y_center)+" "+str(w)+" "+str(h)+'\n') out.close() return countif __name__ == "__main__": data = Voc_Yolo(find_path) number = data.Work(0) print(number)4、最后结果对比
创建成功
与真实数据对比误差很小
"Python如何实现xml格式转txt格式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
格式
数据
公式
目标
不同
成功
中心点
内容
坐标
更多
知识
类型
过程
这是
问题
分析
学习
输出
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
新华互联网科技学校
青岛互联网科技公司
互联网 科技创业
融势互联网科技
猫创互联网科技
互联网金融 科技创新
科技互联网创业计划书
成都仁贤领冠互联网科技有限公司
佳云科技和互联网广告
杭州壁岐互联网科技有限公司
注册互联网科技公司经营范围大全
互联网科技大奖都有哪些公司
米聚互联网科技南京有限公司排面
互联网时代的科技公司
互联网企业科技类企业如何做账
图游互联网科技
信承诺互联网科技有限公司
同城互联网络科技
数字科技和互联网金融哪个好
有格互联网科技
河南真二互联网科技有限公司
恒生科技互联网指数分析
银川新华互联网科技学校地址
深圳前海聚择互联网科技有限公司
互联网科技人工智能实验室
本届互联网大会上的黑科技
互联网硬科技公司
抖集互联网科技技术咨询
北京天晋互联网科技有限公司