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 = ...
随机推荐
- Hive中排序和聚集
//五种子句是有严格顺序的: where → group by → having → order by → limit ; //distinct关键字返回唯一不同的值(返回age和id均不相同的记录) ...
- openwrt下如何只编译linux内核
答:make target/linux/install V=s (此操作也会将最终镜像打包好,V=s会输出日志) 拓展 清空内核: make target/linux/clean V=s 解压内核: ...
- storm(一) window机制
Watermark作用 在解释storm的window之前先说明一下watermark原理. Watermark中文翻译为水位线更为恰当. 顺序的数据从源头开始发送到到操作,中间过程肯定会出现数据乱序 ...
- 创建Jmeter中使用的jar包中的工具类方法
1. 在IDEA中新建一个maven工程. 2. 编写工具类方法,如加密算法.此处以加法为例. package DemoTest; public class DemoClass{ public int ...
- python+opencv链接摄像头
import cv2 import numpy as numpy cap=cv2.VideoCapture(0) #设置显示分辨率和FPS ,不设置的话会非常卡 cap.set(cv2.CAP_PRO ...
- JavaScript声明全局变量三种方式的异同
JavaScript中声明变量很简单var(关键字)+变量名(标识符). 方式1 1 2 var test; var test = 5; 需注意的是该句不能包含在function内,否则是局部变量.这 ...
- java使用poi实现excel表格生成
通过使用poi技术生成Excel,使用反射技术实现自动映射列表的数据. ExportTableUtil.java public class ExportTableUtil { /** * * @Des ...
- C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 03)
go语言当中,没有 class 的概念,那么面向对象的编程思想如何展现呢,go语言中对结构体的使用 struct. package main import "fmt" type P ...
- linux 普通synflood攻击防范网络参数设置
linux如何防SYN攻击 [root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 172 ESTABLISHED 59 ...
- Neutron二层网络服务实现原理
网络 网络(network)是一个隔离的二层网段,类似于物理网络世界中的虚拟 LAN (VLAN).更具体来讲,它是为创建它的租户而保留的一个广播域,或者被显式配置为共享网段.端口和子网始终被分配 ...