python机器可读数据-XML
XML
XML是一门标记语言。也就是说,它具有包含格式化数据的文档结构。
XML文档本质上只是格式特殊的数据文件。
在XML文件中有两个位置可以保存数据值:2个标签之间,标签的属性。
导入XML数据
import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
print(list(root)) #变量root的所有方法和属性
这样就获得了data-text.xml 文件的根元素root,并把root变为列表形式。
得到:
[<Element 'QueryParameter' at 0x000000000D864908>, <Element 'QueryParameter' at 0x000000000D864A48>, <Element 'QueryParameter' at 0x000000000D864A98>, <Element 'QueryParameter' at 0x000000000D864AE8>, <Element 'QueryParameter' at 0x000000000D864B38>, <Element 'QueryParameter' at 0x000000000D864B88>, <Element 'Copyright' at 0x000000000D864BD8>, <Element 'Disclaimer' at 0x000000000D864CC8>, <Element 'Metadata' at 0x000000000D864D68>, <Element 'Data' at 0x000000000FCC9D68>]
其中Element后面引号中为根元素root的子元素。某些元素具有子元素(不是所有)。可以用find或findall利用标签搜索子元素。
import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
data = root.find('Data')
print(data)
得到子元素data
<Element 'Data' at 0x000000000DA29A48>
得到列表形式data
print(list(data))
[<Element 'Observation' at 0x000000000DA29A98>, <Element 'Observation' at 0x000000000DA29DB8>, <Element 'Observation' at 0x000000000DA24138>, <Element 'Observation' at 0x000000000DA24458>, <Element 'Observation' at 0x000000000DA24778>, <Element 'Observation' at 0x000000000DA24A98>, <Element 'Observation' at 0x000000000DA24DB8>, <Element 'Observation' at 0x000000000DA1ED68>, <Element 'Observation' at 0x000000000DA1EC78>, <Element 'Observation' at 0x000000000DA1E958>, <Element 'Observation' at 0x000000000DA1E408>, <Element 'Observation' at 0x000000000DA1E368>, <Element 'Observation' at 0x000000000DA1BEA8>, <Element 'Observation' at 0x000000000DA1BC28> ]
Observation为data的子元素
事实上可以这样:
import xml.etree.ElementTree as ET
tree = ET.parse('data-text.xml') #把整个XML对象保存在变量tree中
root = tree.getroot() #getroot函数获得树的根元素
data = root.find('Data')
for i in data: #data中每一个元素i
for ii in i: #每一个元素i中的每一个元素ii
print(ii.attrib) #字典形式ii
print(ii.text) #2个标签之间的文本,没有则None
Kazil J, Jarmul K. Data Wrangling with Python[J]. 2016.
python机器可读数据-XML的更多相关文章
- 用 ElementTree 在 Python 中解析 XML
用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...
- python标准库xml.etree.ElementTree的bug
使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...
- 在python中处理XML
XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> < ...
- [python标准库]XML模块
1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...
- python专题-读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python 来读取xml 文件. 什么是 ...
- python模块:xml
"""Core XML support for Python. This package contains four sub-packages: dom -- The W ...
- 【304】python专题-读取xml文件
参考:XML DOM 参考手册(w3school) 参考:python专题-读取xml文件 参考:请问用python怎么修改xml的节点值? 1. 读取标签内的文本(Python) 如下的 xml 文 ...
- Python模块 shelve xml configparser hashlib
常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...
- python模块(shelve,xml,configparser,hashlib,logging)
1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...
随机推荐
- JS宽高理解
1.clentWidth和clientHeight ①加入无padding.无滚动条显示占据位置 clientWidth=style.width ②假如有padding.无滚动 clientWidth ...
- Maven解决包冲突
依赖树 $ mvn dependency:tree [WARNING] [WARNING] Some problems were encountered while building the effe ...
- 使用win10的开始屏幕,在系统中设置简洁、快捷桌面
前几天入手了一个本本,由于之前电脑使用的柠檬桌面软件和现在本本的分辨率不适应,意外发现win10自带的开始屏幕整理桌面也是很有意思,再加上触摸板的手势,瞬间觉得整个电脑都清洁许多.废话少说,开始上料. ...
- Git仓库删除大文件
Git仓库删除大文件 背景 当用Git久了,难免会手误或临时添加一些大文件到仓库中,即使以后添加进了.gitignore,甚至做了git rm,但是Git为了保证版本可回退,history pack里 ...
- 解决ubuntu无法使用root用户启动Google Chrome浏览器
1.找到Chrome的路径 # whereis google-chrome google-chrome: /usr/bin/google-chrome /usr/share/man/man1/goog ...
- selenium+java 数据驱动
一.数据驱动测试概念 数据驱动测试是相同的测试脚本使用不同的测试数据执行,测试数据和测试行为完全分离. 二.实施数据驱动测试的步骤: 1.编写测试脚本,脚本需要支持程序对象.文件或者数据库读入测试数据 ...
- nodejs+express+socket.io
其实官网文档清楚了 https://socket.io/get-started/chat/ 但是因为之前写的是nodejs+express, socket.io是后加的, 还是有小坑 服务器端: 官 ...
- python 学习笔记 3 ----> dive into python 3
Python内置数据类型 注意: Python可以不需要声明变量的数据类型.它是根据变量的初始赋值情况分析数据类型,并在内部跟踪变量. 比较重要的数据类型: 1 布尔型(Booleans):True. ...
- 还能不能愉快地起一个web服务啦?——1st Step!白话http和代码交互的那点儿事儿~
学写python的时候,我们多多少少都接触到了web程序,然而你有没有想过,当浏览器发送了一个http请求时,等待接收这个请求的后端代码是一种什么样的思想感情? 就像下面这张图里画的一样,后端也许是一 ...
- LVM (逻辑卷管理器)
图片来自:https://www.cnblogs.com/linuxprobe/p/5381538.html 参考博客:https://www.cnblogs.com/linuxprobe/p/538 ...