python处理xml文件_Python读写XML文件

XML全称是eXtensible Markup Language(扩展标记语言)。XML文档类似一棵树。读取内容时,首先访问根节点(通常来说,这个节点后面会跟着XML的声明,<?xml version="1.0" encoding="UTF-8"?>;每个文档都要有这样的声明)。文件如下:8946f2a479c38424e45fd1ce043cff34d3a33b91.png文件首

在这个例子中,根节点是。一个...包含了一系列的...7338dafeaa2fdba77dc66534e4360e05d77ad51f.png文件尾

c0b9c4cdee6f806af5440476eeff0b56eaed137c.png

要使用pandas和xml模块。xml.etree.ElementTree模块是一个轻量级XML解析器,用来解析文件的XML结构。然后要定义一些函数如下,后面会详细介绍。930cd019f9fa7e0dedf5970f52ed4a0cd1e594dc.png

fa7e7e2b28086b94c707e0bb4b2bd0dd7fa68a34.png

使用函数进行操作,xml_read是DataFrame对象,输出前10行,再将数据读入文件中。

函数介绍:

read_xml():读取XML数据,返回pd.DataFrame81603e33d175375f4e07079f48a5fe9aa96721e2.png

首先,打开文件,使用.parse()方法,由xml文件创建了一个树状结构并存入tree对象中。接着,在tree对象上用.getroot()方法提取根节点:这是进一步处理数据的前提。最后一行调用iter_records方法(后面定义),传入根节点的引用,进而将返回的信息转换成DataFrame。

iter_records():遍历所有记录的生成器。c654d23eaeb1649633105b5aedcfa440b82ebbaf.png

iter_records方法是生成器,这个方法生成一些值。普通方法结束时一次性返回所有的值;但生成器不同,每次只向主调用方法返回一个值,直到结束。每读一行,iter_records方法就返回一个temp_dict字典对象给read_xml方法。 的值可以通过xml节点的.text属性访问。

read_xml方法的return语句从传入的所有字典中创建一个列表,列表中元素为字典,每个字典是一条数据,将列表转换成DataFrame。ad5ffcca01b49fb7efc5f2566b3caa3f05b009e1.png

write_xml():以XML格式写入数据。

打开指定的文件,写xml声明开头,接着写xml的根节点。接下来,写数据。使用DataFrame对象的.apply()方法遍历内部每一行,第一个参数中指定的xml_encode()方法应用到DataFrame每一行上。xml_encode()处理DataFrame的每一行,如下:

6548e68e6e99aedb7daeaa6bd8fa286662a8c33a.png

代码生成了一个字符串列表xmlItem。列表首元素是,,尾元素是。中间加入数据。解析完所有字段后,使用‘\n’.join()方法,将xmlItem列表中所有项连接成一个长字符串。把字符串返回。

前10行数据如下,27e1e27c5b8bd5b00fdde2d7d26c1cefb8f20737.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值