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

目录:
1. XML解析
2. JSON解析
3. 小知识

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


Python程序员都知道的入门知识の十_第1张图片
python自学之路

1. XML解析

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

1.1. XML有哪些功能?

传输和存储数据

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

  • SAX(Simple API for XML)xml.sax
    SAX API文档
    流式读取XML文件。
  • DOM(Document Object Model)xml.dom
    将XML文件以树形结构展示。
    DOM API文档
  • ElementTree(元素树)xml.etree.ElementTree
    ElementTree API文档

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

Python程序员都知道的入门知识の十_第2张图片
Paste_Image.png

解析代码:


Python程序员都知道的入门知识の十_第3张图片
Paste_Image.png

解析结果:

Python程序员都知道的入门知识の十_第4张图片
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

Python程序员都知道的入门知识の十_第5张图片
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
Python程序员都知道的入门知识の十_第6张图片
Paste_Image.png

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

2. JSON解析

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

Python程序员都知道的入门知识の十_第7张图片
Paste_Image.png

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

Python程序员都知道的入门知识の十_第8张图片
Paste_Image.png

如何使用?

  • 导入模块:import demjson
  • 编码:json = demjson.encode(data)
  • 解码:text = demjson.decode(json)
Python程序员都知道的入门知识の十_第9张图片
Paste_Image.png

3. 小知识

3.1.字符串拼接后打印

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

Paste_Image.png

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

你可能感兴趣的:(Python程序员都知道的入门知识の十)