python常用模块之xml模块
python常用模块之xml模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,在json还没诞生的年代,大家都是使用xml,目前很多传统公司的系统接口主要还是xml。
xml的格式主要如下,都是通过<>标签对来区别数据结构的:
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year updated="yes">2009</year>
<gdppc>141100</gdppc>
<neighbor direction="E" name="Austria" />
<neighbor direction="W" name="Switzerland" />
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year updated="yes">2012</year>
<gdppc>59900</gdppc>
<neighbor direction="N" name="Malaysia" />
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year updated="yes">2012</year>
<gdppc>13600</gdppc>
<neighbor direction="W" name="Costa Rica" />
<neighbor direction="E" name="Colombia" />
</country>
</data>
xml协议在每个语言中都是支持的,在python中可以用以下模块操作xml
# 遍历
import xml.etree.ElementTree as ET
tree = ET.parse("xmltest.xml") # 使用parse函数打开xml文件,并赋值给变量tree
# print(tree) # <xml.etree.ElementTree.ElementTree object at 0x000001F3FF2BEC18>
root = tree.getroot()
# print(root) # <Element 'data' at 0x00000249B582A958> 等于找到了xml文件root根的内存地址
# print(root.tag) # data 可以理解成这个内存地址代表的是data
for child in root: # 此时的root是xml文件根内存地址
print('---------------------------',child.tag,child.attrib) # child.tag代表根的下一级开始的地方country,child.attrib代表参数
for i in child:
print(i.tag,i.text) # i.tag代表着country下一级开始的地方即rank等,i.text代表值
# 只查找year
for i in root.iter('year'):
print(i.text)
# 2009
# 2012
# 2012
# 修改,year都增加1
for i in root.iter('year'):
new_year = int(i.text) + 1 # i.text代表值
i.text = str(new_year) # xml中只支持str类型
i.set("update","yes") # 添加属性
tree.write("xmltest.xml") # 将更改的内容写进原文档中
# 删除
for node in root.findall('country'): # 在整个xml文件中查找country开头的k
rank = int(node.find('rank').text) # 然后找到rank的值并转换成int类型重新赋值给rank
if rank > 30:
root.remove(node) # 如果符合条件则删除root下这个country的k
tree.write("new_xmltest.xml")
快来创建自己的xml文档把
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/5/14 18:03
# @Author : XiaoYafei
# @File : 02-创建自己的xml文档.py
import xml.etree.ElementTree as ET
root = ET.Element('namelist') # namelist为根
name = ET.SubElement(root,"name",attrib={'enrolled':"yes"}) # 往namelist根下创建name大节点,属性为...
age = ET.SubElement(name,"age",attrib={'checked':"no"}) # 在name大节点下创建age小节点,属性为...
sex = ET.SubElement(name,"sex") # 添加小节点sex
name = ET.SubElement(name,"name")
name.text = 'xiao'
sex.text = 'male' # sex节点的值
et = ET.ElementTree(root)
et.write("my.xml",encoding='utf-8',xml_declaration='True') # 版本号声明
此时创建的my.xml文件为:
<?xml version='1.0' encoding='utf-8'?>
<namelist>
<name enrolled="yes">
<age checked="no" />
<sex>male</sex>
<name>xiao</name>
</name>
</namelist>
python常用模块之xml模块的更多相关文章
- Python常用内置模块之xml模块
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- python全栈开发-hashlib模块(数据加密)、suprocess模块、xml模块
一.hashlib模块 1.什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 ...
- python 之 random 模块、 shutil 模块、shelve模块、 xml模块
6.12 random 模块 print(random.random()) (0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) [1,3] 大 ...
- Python常用的内建模块
PS:Python之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用.下面就来看看一些常用的内建模块. 参考原文 廖雪峰常用的内建模 ...
- logging模块、shutil模块、subprocess模块、xml模块
logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...
- python16_day06【类、RE模块、subprocess模块、xml模块、shelve模块】
一.shelve模块 import shelve # 基于pickle模块, d = shelve.open('shelve_test') class Test(object): def __init ...
- Python常用数据结构之collections模块
Python数据结构常用模块:collections.heapq.operator.itertools collections collections是日常工作中的重点.高频模块,常用类型由: 计数器 ...
- Python常用数据结构之heapq模块
Python数据结构常用模块:collections.heapq.operator.itertools heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小 ...
- python常用函数库及模块巧妙用法汇总
在用python编写脚本或写程序过程中总要遇到一些对大文件或数据进行排序,计算,循环跌代等.我想下面这些函数库一定能用得到,总结如下:便于以后备查 列表去重(传说是列表去重最高效的方法): al = ...
随机推荐
- char,short,int长度
数据类型的本质就是固定内存大小的别名 char:1byte short: 2byte int:4byte 其实变量也是对连续内存的别名,相当于这段内存的句柄.钩子
- 爬虫框架Scrapy之Spider
Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作及 ...
- 第四篇:Spark SQL Catalyst源码分析之TreeNode Library
/** Spark SQL源码分析系列文章*/ 前几篇文章介绍了Spark SQL的Catalyst的核心运行流程.SqlParser,和Analyzer,本来打算直接写Optimizer的,但是发现 ...
- 7.scala:继承
版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=315 排版乱?请移步原文获得更好的阅读体验 类似于java中的继承,在scala中同样有继承一说,而且在很多方面 ...
- nagios配置邮件报警
1.配置sendmail vi /etc/mail.rc 加入以下行 set bsdcompat set from=邮件用户名@domain.com smtp=smtp.126.com set smt ...
- vue的seo方案 prerender-seo-plugin
利用vue cli 3.0安装脚手架.记住:勾选vue-router. 在vue.config.js里添加配置: 2, var path = require('path') 3, const Prer ...
- 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
环境说明:系统:Windows 8.1 简体中文专业版 虚拟机:VMware Workstation 11.0.0 报错:此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态.如 ...
- [Vue]组件——实现动态组件:keep-alive的使用
1.在app.vue中用一个 <keep-alive> 元素将其动态组件包裹起来: keepAlive为true时,第一次被创建的时候缓存下来,为false时,不会缓存 <keep- ...
- Jenkins搭建GitHub仓库
一.安装Jenkins 二.安装Git 三.注册GitHub账号 以上都很简单,网上资源丰富 四.新增GitHub远程仓库,连接到本地Git,这样就可以实现代码提交到GitHub中了 ----自行找资 ...
- S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则
注:以下图片均来自<如何向妻子解释OOD>译文链接:http://www.cnblogs.com/niyw/archive/2011/01/25/1940603.html < ...