专栏首页Petrichor的专栏python: .xml文件 操作

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]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python: 显示进度条

    JNingWei
  • python: center、ljust、rjust 函数

    JNingWei
  • leetcode: 27. Remove Element

    JNingWei
  • python中的编码问题

    在python2.x中,有两种数据类型,unicode和str,这两个都是basestring的子类

    py3study
  • 【自然语言处理】利用LDA对希拉里邮件进行主题分析

    然后取出ExtractedBodyText的那一列,对每一行email进行噪声过滤,并返回一个对象:

    绝命生
  • 重写边缘计算的灾难恢复计划

    多年以来,编写灾难恢复计划一直是IT部门的责任,但是现在必须重新调整这些计划,以针对边缘计算和云计算环境进行故障转移。有哪些新功能?组织如何修改其计划?

    静一
  • 小程序开发实战(6):基础组件(text、icon和progress)

    小程序在有很多组件,其中基础组件用来显示一些静态的信息,也是各种组件中比较常用的。本文主要介绍text组件、icon组件和progress组件。

    蒙娜丽宁
  • Appium自动化(9) - appium元素定位的快速入门

    https://www.cnblogs.com/poloyy/category/1693896.html

    小菠萝测试笔记
  • Exchange删除移动完成的邮箱记录

    在Exchange服务器维护中,常用 New-MoveRequest 命令来移动邮箱到指定的数据库。要想查询移动的状态,可使用 Get-MoveRequest ...

    水中游泳的小鸟
  • Linux shell 程序设计5——shell中一些特殊符号的用法总结

    1、{} 大括号: eg: ls my_{finger,toe}s 这条命令相当于如下两个命令的组合: ls my_fingers ; ls my_toes e...

    用户1214695

扫码关注云+社区

领取腾讯云代金券