700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 数据标签处理:python将xml文件转换为txt csv格式

数据标签处理:python将xml文件转换为txt csv格式

时间:2019-07-08 18:44:38

相关推荐

数据标签处理:python将xml文件转换为txt csv格式

数据标签处理:python将xml文件转换为txt,csv格式

这里的标注文件为点标注文件

每次要用数据处理脚本的时候都忘记放哪里了,然后重写了一遍又一遍,虽然代码不长,但是每次都有重新写还是很麻烦,这次深深的记录一下,最扎心的事莫过于刚写完的代码不小心删了。。。

一、xml—txt

from xml.dom.minidom import parseimport os#将xml格式的点标注文件转换为txt格式# (可以一个xml文件里面包含所有的图片标注信息,也可以一个xml对应1张图片的标签信息)#将每一个xml文件转换为txt格式:(x,y)def convert_annotation(xmlfilepath,txtpath):in_file = open(xmlfilepath, encoding='utf-8')tree = parse(in_file)root = tree.documentElement# 获取所有imagesimages = root.getElementsByTagName("image")for image in images:imgname = image.getAttribute("name").split(".")[0]out_file = open(txtpath+"\\"+'%s.txt' % (imgname), 'a', encoding='utf-8') # 生成txt格式文件points = image.getElementsByTagName("points")for point in points:if point.hasAttribute("points"):point = str(point.getAttribute("points"))x = point.split(",")[0]y = point.split(",")[1]out_file.write(x+" "+y+ '\n')out_file.close()if __name__ == '__main__':#xml文件夹xmlpath = r'C:\Users\Owen\Desktop\xml'#txt文件夹txtpath = r'C:\Users\Owen\Desktop\txt'#读取xml文件夹下的所有xml文件filelist = os.listdir(xmlpath)for files in filelist:#获取每一个xml文件名xmlfilepath = xmlpath+ "\\"+files#将每一个xml文件转换为txtconvert_annotation(xmlfilepath,txtpath)

二、txt—csv

import csvimport os#将txt文件转换为csv文件if __name__ == '__main__':#txt文件夹的路径txtpath = r'C:\Users\Owen\Desktop\txt'#获取所有的txt文件filetxts = os.listdir(txtpath)for filetxt in filetxts:if filetxt.split(".")[1]!="txt":continuecsvFile = open(txtpath+"\\"+filetxt.split(".")[0]+".csv",'w',newline='',encoding='utf-8') # 固定格式writer = csv.writer(csvFile) f = open(txtpath+"\\"+filetxt,"r")for line in f.readlines():line = line.strip()writer.writerow([float(line.split(' ')[0]),float(line.split(' ')[1])])csvFile.close()

常见的点标注文件为.mat格式,通常用:

data = scio.loadmat(mat_filename)#读出来的是字典

转成字典后进行处理,如果我们没有mat文件,可用直接读取csv文件,并创建字典格式:

data = np.loadtxt(csv_filename,delimiter=',')datamat = {'annPoints':data}

注意:如果直接用txt文件进行读取,会报错

data = np.loadtxt(txt_filename,delimiter=','),

因为坐标都是str格式的,所以要转为csv格式。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。