【python】delete part of xml

什么是XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

原文件如下,我们想删除掉部分object

这里写图片描述

展开

这里写图片描述

计算面积的方法为(xmax-xmin)*(ymax-ymin)
由图可以计算出,三个目标的面积分别为,

47124
88290
59444

我们要保留面积大于60000的目标

话不多说,上代码

import xml.etree.ElementTree as ET
xml_name = '/root/userfolder/Experiment/TCT/t00004.xml'
annotat_tree = ET.parse(xml_name)
root = annotat_tree.getroot()

# 找到所有object
object_dect = root.findall('object')

#遍历object,筛选不符合条件的目标
for x in object_dect:
    xmin = x.find("./bndbox/xmin") #左上
    ymin = x.find("./bndbox/ymin") 
    xmax = x.find("./bndbox/xmax") #右下
    ymax = x.find("./bndbox/ymax")
    xmin = int(xmin.text) - 1 
    ymin = int(ymin.text) - 1
    xmax = int(xmax.text)
    ymax = int(ymax.text)
    xlen = xmax - xmin
    ylen = ymax - ymin
    # 如果目标的面积小于60000,删除
    #print(xlen*ylen)
    if xlen*ylen<=60000:
        root.remove(x)

##保存结果
annotat_tree.write('tt1.xml')

Output

这里写图片描述

OK,成功筛选了不符合条件的目标

上面用到了查找和删除操作,更多操作请看

Python XML操作

猜你喜欢

转载自blog.csdn.net/bryant_meng/article/details/81169756