Python如何使用lxml来读写xml格式文件的实例分享


本文摘自php中文网,作者黄舟,侵删。

这篇文章主要为大家详细介绍了python利用lxml读写xml格式的文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便。

1. 写xml文件

a) 用etree和objectify


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

from lxml import etree, objectify

 

E = objectify.ElementMaker(annotate=False)

anno_tree = E.annotation(

  E.folder('VOC2014_instance'),

  E.filename("test.jpg"),

  E.source(

    E.database('COCO'),

    E.annotation('COCO'),

    E.image('COCO'),

    E.url("http://test.jpg")

  ),

  E.size(

    E.width(800),

    E.height(600),

    E.depth(3)

  ),

  E.segmented(0),

)

 

etree.ElementTree(anno_tree).write("text.xml", pretty_print=True)

输出的test.xml文件内容如下:

"

如果需要在anno_tree的基础上加其他标签的话用append即可:


1

2

3

4

5

6

7

8

9

10

11

12

E2 = objectify.ElementMaker(annotate=False)

anno_tree2 = E2.object(

  E.name("person"),

  E.bndbox(

    E.xmin(100),

    E.ymin(200),

    E.xmax(300),

    E.ymax(400)

  ),

  E.difficult(0)

)

anno_tree.append(anno_tree2)

上面的输出就变成了:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<annotation>

 <folder>VOC2014_instance/person</folder>

 <filename>test.jpg</filename>

 <source>

  <database>COCO</database>

  <annotation>COCO</annotation>

  <image>COCO</image>

  <url>http://test.jpg</url>

 </source>

 <size>

  <width>800</width>

  <height>600</height>

  <depth>3</depth>

 </size>

 <segmented>0</segmented>

 <object>

  <name>person</name>

  <bndbox>

   <xmin>100</xmin>

   <ymin>200</ymin>

   <xmax>300</xmax>

   <ymax>400</ymax>

  </bndbox>

  <difficult>0</difficult>

 </object>

</annotation>

b) 用etree和SubElement


阅读剩余部分

相关阅读 >>

Python文件的读写及文件字符编码设置方法详解

Python实现各种最优化算法

Python中复数怎么表示

Python做出新闻聚合项目

Python3中* 和 ** 运算符的用法是什么

非常实用的Python小技巧总结

详解介绍Python的发展起源及基础知识

Python中if语句用法

Python列表元素如何求和

值得一看的Python高效数据处理

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...