美文网首页python程序员大数据 爬虫Python AI Sql
Python程序员都知道的入门知识の十

Python程序员都知道的入门知识の十

作者: 耑意儿 | 来源:发表于2017-01-13 22:00 被阅读145次
    目录:
    1. XML解析
    2. JSON解析
    3. 小知识
    

    目录【Python程序员都知道的入门知识】


    python自学之路

    1. XML解析

    XML即可扩展标记语言(eXtensible Markup Language)

    1.1. XML有哪些功能?

    传输和存储数据

    1.2. 有哪些解析XML的方法?

    1.3. 三种解析方式有什么优劣?

    • DOM:慢,耗内存
    • SAX:快,占用内存少,需要用户自己实现回调函数
    • ElementTree:代码可用性好,速度快,消耗内存少

    很显然,用ElementTree吧。

    1.4. 什么是事件处理器ContentHandler?

    SAX解析提供的四个处理器之一,SAX的主要回调接口

    官方解释
    怎么用?
    • 继承ContentHandler类
    • 重写几个方法:
      characters(content):接收字符数据的通知
      startDocument():文档启动时的操作
      endDocument():文档解析完毕时的操作
      startElement(name,attrs):解析特定元素的开始标签时的操作
      endElement(name):遇到特定元素的结束标签时的操作
      SAX API定义了四种Handler处理工具,分别是:
      Content HandlerDTD HandlerEntityResolverErrorHandler

    1.5. 如何使用SAX进行解析?

    • 导入模块:import xml.sax
    • 自定义一个数据处理器,继承自ContentHandler
    • 通过xml.sax.make_parser()获取到解析器对象
    • 通过parser.setContentHandler(handler)设置数据处理器
    • 调用parser.parse('xmldata.xml')进行解析

    待解析的XML文件:SongData.xml

    Paste_Image.png

    解析代码:


    Paste_Image.png

    解析结果:

    Paste_Image.png

    1.6. 如何使用DOM进行解析?

    • 导入模块:import xml.dom.minidom
    • 打开文档:dom = xml.dom.minidom.parse('SongData.xml')
    • 获取文档对象:domObj = dom.documentElement
      节点名:domObj.nodeName
      节点值:domObj.nodeValue
      节点类型:domObj.nodeType
    • 获取属性值:domObj.getAttribute('attr_name')
    • 获取子标签列表:domObj.getElementsByTagName('tag_name')
    • 获取标签对数据:nodelist.childNodes[0].data
      nodelist.firstChild.data

    如下,待解析的XML文件还是SongData.xml

    Paste_Image.png

    1.7. 如何使用ElementTree元素树进行解析?

    Python提供了元素树的两种实现方式:
    xml.etree.ElementTreexml.etree.cElementTree
    其中cElementTree是由C语言所实现,速度比前者更快,内存消耗也更少,推荐使用。
    注意python低版本的导入方式:

    try:
        import xml.etree.cElementTree as ET
    except ImportError:
        import xml.etree.ElementTree as ET
    
    • 导入模块,如上
    • 加载文档:doc = ET.ElementTree(file = 'SongData.xml')
    • 获取根节点:root = doc.getroot()
    • 获取子节点列表:musics = root.findall('music')
    • 根据属性名获取属性值:title = musics.attrib.get('title')
    • 根绝名获取属性值:singer = music.find('singer').text
    • 获取子节点:subElement = music.getChildren()
    • 获取标签名和标签值:subElement.tag,subElement.text
    Paste_Image.png

    此外利用ET我们还可以对XML文件进行修改。

    2. JSON解析

    JSON是什么?
    JSON即:JavaScript Object Notation,一种轻量级的数据交换格式。
    JSON怎么封装和解析?
    JSON数据的解析依赖Demjson模块
    下载地址:Demjson Download

    Paste_Image.png

    加压下载下来的压缩文件:demjson-2.2.4.tar.gz
    打开系统的命令提示符,切换到demjson所在的文件目录下
    输入:python setup.py install后回车即可:

    Paste_Image.png

    如何使用?

    • 导入模块:import demjson
    • 编码:json = demjson.encode(data)
    • 解码:text = demjson.decode(json)
    Paste_Image.png

    3. 小知识

    3.1.字符串拼接后打印

    加括号与不加括号的差别:

    Paste_Image.png

    参考资料:菜鸟教程之JSON菜鸟教程之XML

    相关文章

      网友评论

      本文标题:Python程序员都知道的入门知识の十

      本文链接:https://www.haomeiwen.com/subject/pacrbttx.html