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模块主要 ...
随机推荐
- Maven工程的POM继承
父POM的作用是消除配置的重复. 父POM必须<packaging>pom</packaging>. 还有 <modules> <module>子模块1 ...
- python多环境下虚拟环境的搭建和使用
由于开发环境要求,或者实际需要.经常会出现python2.7和python3.x共存下的开发环境问题.虚拟环境的搭建可以很好的隔离Projects的开发环境. 1.首先解决python2.7和pyth ...
- _spellmod_aura_pct
属性光环 为玩家增加光环或降低属性 `aura`光环ID `auraType1` 配置属性('空','生命值','全属性','近战攻击强度','远程攻击强度','法术强度','治疗效果','施法速度' ...
- CSS之实现垂直时间线展示相关内容效果
如下,最近在工作中遇到实现时间线效果的需求,用纯css即可实现,下面给出详细实现代码. html: <div class="time_line_list_wrap hide" ...
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
- 第二章 Java 基本语法1
2.1关键字 1.定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词). 2.特点:关键字中所有字母都是小写字母. 3.分类: 用于定义数据类型的关键字:byte.short.int.lo ...
- 另类AOP设计
常见的AOP设计都基于Remoting的RealProxy,或者基于Emit实现的动态代理,或者基于反射的Attribute扫描拦截.但是我们还有另类的拦截方案DynamicObject,只要我们继承 ...
- application.xml中配置文件properties导入
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.Prop ...
- python3 doc2vec文本聚类实现
import sys #doc2vev import gensim import sklearn import numpy as np from gensim.models.doc2vec impor ...
- jquery源码解读
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐进增强)优雅的处理能 ...