python: .xml文件 操作

.xml 读取

我的.xml文件如下:
这里写图片描述

Code

通过如下代码模板,可实现对.xml文件的信息快捷读取:

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/Retail/001.xml"

def main():

    tree = ElementTree()
    tree.parse(XML_PATH)

    # 对一级text的获取
    folder = tree.find('folder').text  # milkpowder
    filename = tree.find('filename').text  # image005.png
    path = tree.find('path').text  # ../../image005.png

    size = tree.find('size')
    size_width = size.find('width').text  # 1440
    size_height = size.find('height').text  # 1080
    size_depth = size.find('depth').text  # 3

    segmented = tree.find('segmented').text  # 0

    # 对所有object的获取
    objs = tree.findall('object')

    # 对每个子object分别进行text获取
    for idx in range(len(objs)):
        tag = objs[idx].find('name').text
        x1 = int(round(float(objs[idx].find('bndbox').find('xmin').text)))
        y1 = int(round(float(objs[idx].find('bndbox').find('ymin').text)))
        x2 = int(round(float(objs[idx].find('bndbox').find('xmax').text)))
        y2 = int(round(float(objs[idx].find('bndbox').find('ymax').text)))
        bbox = [x1, y1, x2, y2]


if __name__ == "__main__":
    main()

.xml 修改文本

# 导入库文件
from xml.etree.ElementTree import ElementTree, Element

# 指定.xml文件地址
XML_PATH = "/Users/megvii/Desktop/001.xml"


def main():

    tree = ElementTree()
    tree.parse(XML_PATH)
    objs = tree.findall('object')

    # 修改 指定属性 的 文本
    objs[0].find('name').text = "Nanjing"

    # 将新的tree覆盖写入原xml文件
    tree.write(XML_PATH, encoding="utf-8")


if __name__ == "__main__":
    main()

成功将第一个“object”项的”name”属性的文本改为了“Nanjing”:
这里写图片描述

Summary

.xml文件信息的存放类似于多级的字典(dict)。
因此,通过xml.etree.ElementTree库对.xml文件信息的读取,其实就是在分级text下对指定key进行的value读取。


[1] Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值