本书使用的文件、代码:https://github.com/huangtao36/data_wrangling



机器可读(machine readable)文件格式:
1、逗号分隔值(Comma-Separated Values, CSV)
2、JavaScript对象符号(JavaScript Object Notation, JSON)
3、可扩展标记语言(eXtensible Markup Language, XML)
 

第三章使用的数据文件:



XML数据

XML是一种标记语言,它具有包含格式化数据的文档结构。本质是也只是格式特殊的数据文件。
要处理的数据样本(XML基本数据格式):

XML中有两个位置可以保存数据:

    1、两个标签之间:<Display>71</Display>

    2、标签的属性:<Dim Category="SEX" Code="BTSX"/>——其中Category的属性值是“SEX”,Code的属性值是"BTSX"。

    XML的属性可以保存特定标签的额外信息,这些标签又嵌套在另一个标签中。

实现代码(基于Python3)

from xml.etree import ElementTree as ET

tree = ET.parse('data-text.xml')
root = tree.getroot() #获取树的根元素 data = root.find('Data') all_data = [] for observation in data:
record = {}
for item in observation:
lookup_key_List = list(item.attrib.keys())
lookup_key = lookup_key_List[0]
if lookup_key == 'Numeric':
rec_key = 'NUMERIC'
rec_value = item.attrib['Numeric']
else:
rec_key = item.attrib[lookup_key]
rec_value = item.attrib['Code']
record[rec_key] = rec_value
all_data.append(record) print (all_data)

输出(部分):

  (输出的是单行数据,为了直观,这里进行了处理。)

代码解释

from xml.etree import ElementTree as ET

本例中使用的是ElementTree、还可以使用lxml、minidom这两种库来解析XML文件,在此不做说明

获取Observation元素中的内容

  由上面的样本可知,我们使用的数据是包含在一个<Data>...</Data>中的,这里使用根元素的find方法可以利用标签名来搜索子元素。 

from xml.etree import ElementTree as ET

tree = ET.parse('data-text.xml')
root = tree.getroot() #获取树的根元素 data = root.find('Data') for observation in data:
for item in observation:
print(item.attrib)

输出(部分):

  

        输出的是<Observation>  ........</Observation>标签里面的内容
        我们的数据文件只有一个Data标签,如果有多个Data标签,可以将find函数改为findall函数来遍历。
    attrib:可以返回每一个节点的属性
 
  提取重要内容
     获得键的代码:

from xml.etree import ElementTree as ET

tree = ET.parse('data-text.xml')
root = tree.getroot() #获取树的根元素 data = root.find('Data') all_data = [] for observation in data:
record = {}
for item in observation:
lookup_key_List = list(item.attrib.keys())
lookup_key = lookup_key_List[0]
rec_key = item.attrib[lookup_key]
print(rec_key)
      输出:
        

      上面代码得到了数据的键,但还没有取得相应的值。 

lookup_key_List = list(item.attrib.keys())
lookup_key = lookup_key_List[0]
       这两句得到了每个属性键的名字,既是Category、code、Numeric这些,还没有得到键的值,加入rec_key = item.attrib[lookup_key]就获得了键的值。
      上面两句是Python3的写法,Python2中可以直接合并成一句:lookup_key = item.attrib.keys()[0]
 
      获得值的代码:  
from xml.etree import ElementTree as ET

tree = ET.parse('data-text.xml')
root = tree.getroot() #获取树的根元素 data = root.find('Data') all_data = [] for observation in data:
record = {}
for item in observation:
lookup_key_List = list(item.attrib.keys())
lookup_key = lookup_key_List[0]
if lookup_key == 'Numeric':
rec_key = 'NUMERIC'
rec_value = item.attrib['Numeric']
else:
rec_key = item.attrib[lookup_key]
rec_value = item.attrib['Code'] print(rec_key,rec_value)
    输出:
      

第三章——供机器读取的数据(XML)的更多相关文章

  1. 第三章——供机器读取的数据(CSV与JSON)

    本书使用的文件.代码:https://github.com/huangtao36/data_wrangling 机器可读(machine readable)文件格式: 1.逗号分隔值(Comma-Se ...

  2. python数据处理(一)之供机器读取的数据 csv,json,xml

    代码与资料 https://github.com/jackiekazil/data-wrangling 1 csv 1.1导入csv数据 1.2将代码保存到文件中并在命令行中运行 2.json 2 导 ...

  3. 第三章:使用ListView展示数据

    一.ImageList:存储图像集合 Images 存储的所有图像 ImageSize 图像的大小 ColorDepth 颜色数 TransparentColor 被视为透明的颜色 先设置ColorD ...

  4. 数据库-第三章 关系数据库标准语言SQL-3.3 数据查询

    数据查询 例: 一.单表查询 1.定义 是指仅涉及一个表的查询 2.选择表中的若干列 查询指定列 例: 查询全部列 例: 查询经过计算的值 例: 3.选择表中的若干元组 消除取值重复的行 例: 查询满 ...

  5. SQL SERVER 2012 第三章 使用INSERT语句添加数据

    INSERT [TOP (<expression>) [PERCENT] [INTO] <tabular object>[(column list)][OUTPUT <o ...

  6. (第二章第三部分)TensorFlow框架之读取二进制数据

    系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html (第二章第二部分)Tens ...

  7. Laxcus大数据管理系统2.0(5)- 第三章 数据存取

    第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...

  8. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  9. (第二章第二部分)TensorFlow框架之读取图片数据

    系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html 本文概述: 目标 说明图片 ...

随机推荐

  1. TCC : Tiny C Compiler (2018-2-6)

    饭墙下载,有缘上传: https://files.cnblogs.com/files/bhfdz/tcc-0.9.27-win32-bin.zip https://files.cnblogs.com/ ...

  2. ACM1004:Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  3. STM32_3 时钟初始化分析

    在startup文件中,调用了2个函数,一个是System_Init, 另一个是main. System_Init()在system_stm32f10x.c 这个文件中,先看一下时钟树,再分析一下这个 ...

  4. 十分钟搭建和使用sonarqube代码质量管理平台

    前言 Sonarqube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java.C.C++.JavaScripe等等二十几种编程语言的代码质量 ...

  5. 怎样才能使用ChipScope 加入被优化掉的信号

    在调试过程中常常遇到的一个问题就是,xilinx工具在逻辑综合的过程中,将自己RTL代码中的很多变量都优化掉了,使得调试的抓信号的过程很纠结.以下是解决方法: 1.右键synthesis,在综合选项里 ...

  6. 日志工具——slf4j

    一.概述 简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的lo ...

  7. 成都Uber优步司机奖励政策(2月2日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. Shr-前端汇总

    F7控件监听 f7控件的监听是指,在点击F7控件时,对控件内的内容进行选中后出发该事件监听:通过参数value可以获取当前F7控件的一些值信息. //人力编制方案监听 回写计划期间 及分录数据 ini ...

  9. 用PowerDesign反向生成数据库Sql语句问题

            在用Pd15反向生成数据库时,生成的Sql语句在Sql Server Manager Studio里面报错,根本就执行不了.数据库用的是Sql Server 2008 R2.经过一番修 ...

  10. 了解和分析iOS Crash

    WeTest 导读 北京时间凌晨一点,苹果一年一度的发布会如期而至.新机型的发布又会让适配相关的同学忙上一阵子啦,并且iOS Crash的问题始终伴随着移动开发者.本文将从三个阶段,由浅入深的介绍如何 ...