• 优达学城数据分析师纳米学位——P3项目知识点整理及代码分析 xml文件解析


    The ElementTree XML API

     在廖雪峰的博客中提到:

    start_element  char_data  end_element 的处理思路,关注起始点,数据内容,终止点。

    操作XML有两种方法:DOM和SAX。DOM会把整个XML读入内存,解析为树,因此占用内存大,解析慢,优点是可以任意遍历树的节点。SAX是流模式,边读边解析,占用内存小,解析快,缺点是我们需要自己处理事件。

    正常情况下,优先考虑SAX,因为DOM实在太占内存。

    element 是一种数据类型,介于List 类型和 Dictionary 类型之间,可以包含 一个tag 标签来表示数据实际的含义,几个属性,一个text string 来显示属性,optionla tail string尾注,几个孩子元素(child elements)

    1.1 XML tree and Elements 

    XML is an inherently hierarchiacal data format, 树形结构存储相关数据,文件操作多为element tree 级别的变化,结点的变动多为element 级别的变化

    2. Parse XML 

         多种数据导入方法

    root.tag  root.attribut  root.text 可以直接查看相关数据

    for child in root:
        print child.tag, child.attrib

     同时可以通过索引来查看孩子元素的相关数据, 例如:root[0][1].text

    3.找到某一个元素

    method: iter(), findall(), find(), get(),

    Element.iter()遍历所有的相关数据(包括孩子元素及孩子元素的孩子元素) 

    Element.findall() 找所有直系的孩子元素(direct children of the current element)

    Element.find() 只找第一个孩子元素 first child

    Element.get() 可以access 数据的属性

    4.修改XML文件

    Element.write() 可以 build XML documents and write them to files

    attibutes 可以通过Element.set()修改  

    添加新的 child element 可以通过 Element.append()命令

    移除某一个element, 可以通过Element.remove() 命令,同时可以利用if 语句作为筛选条件, 同时注意int() 命令进行数据类型的转换。

    实现 rank text 分别+1, 增添新属性 updated: yes, 生成新文件 output.xml

    5. 通过ET.Element 命令来创建新的XML 文档,属于暴力添加

  • 相关阅读:
    AcWing242一个简单的整数问题1(差分+树状数组)
    AcWing241楼兰图腾(树状数组)
    AcWing802区间和
    离散化
    AcWing1250格子游戏(并查集)
    vijos难解的问题(LIS最长上升子序列)
    动态规划dp——LIS(最长上升子序列)、LCS(最长公共子序列)
    约数、素数、gcd(最大公约数)、lcm(最小公倍数)
    vijos拓扑编号(逆向拓扑排序+优先队列)
    洛谷P1137旅行计划(拓扑排序+简单dp)
  • 原文地址:https://www.cnblogs.com/kong-xy/p/6388359.html
Copyright © 2020-2023  润新知