Python高级语法——格式化文件——学习心得笔记

Python高级语法——格式化文件——学习心得笔记

  • 前言
    • 为了解决不同设备之间的信息交换
    • 两个模块
    • xml,json

1. xml (EXtensible Markup Language)

  • XML 指可扩展标记语言

  • XML 被设计用来传输和存储数据

  • 什么是 XML?

    • XML 指可扩展标记语言(EXtensible Markup Language)
    • XML 是一种标记语言,很类似 HTML
    • XML 的设计宗旨是传输数据,而非显示数据
    • XML 标签没有被预定义。您需要自行定义标签。
    • XML 被设计为具有自我描述性。
    • XML 是 W3C 的推荐标准
  • XML 与 HTML 的主要差异

    • XML 不是 HTML 的替代。
    • XML 和 HTML 为不同的目的而设计:
    • XML 被设计为传输和存储数据,其焦点是数据的内容。
    • HTML 被设计用来显示数据,其焦点是数据的外观。
    • HTML 旨在显示信息,而 XML 旨在传输信息。

1.1. XML文档的构成

  • 处理指令(可以认为一个文件内只有一个处理指令)
    • 只有一行
    • 且在第一行
  • 根元素(一个文件内只有一个根元素,只能有一个树根:实例中的School
  • 子元素:实例中的student
  • 属性:元素开头括号里面标明
  • 内容: 表明标签所存储的内容
  • 注释:起说明作用的信息
    • 注释的格式:
  • 看实例34_1.xml



    
    
    Felix
    20
    

    
    Felix
    20
    

    
    Felix
    20
    

    
     score>80 







  • 保留字符处理

    • XML中使用的符号可能跟实际符号相冲突,特别是左右尖括号

    • 使用实体引用来表示保留字符

      • score>80 会出现错误,XML不能存在这种写法
      • score>80 #使用实体引用
    • 把含有保留字符的部分放在CDATA模块中,模块内部信息视为不需要转义

    • 保留字符对应的实体引用
      < < 小于
      > > 大于
      & & 和号
      ’ ’ 省略号
      " " 引号

  • XML标签的命名和规则

    • Pascal命名法
    • 用单词表示,首字母大写
    • 大小写严格区分
    • 配对的标签必须一致
  • 命名空间

    • 为了防止命名冲突
    • 需要给可能冲突的的元素添加命名空间
    • xmlns: xml name space
    • 参考网址:http://www.w3school.com.cn/xml/xml_namespaces.asp

1.2. XML访问

  • XML读取分为两个主要技术:SAX DOM
  • SAX(Simple API for XML)
    • 基于事件驱动
    • 利用SAC解析文档设计到解析器和事件处理两部分
    • 特点:
      • 流式读取
  • DOM
    • 最常用
    • 是W3C规定的XMC编程接口
    • 一个XML文件在缓存中以树形结构保存读取
    • 用途
      • 定位浏览XML文件任何一个节点信息
      • 添加删除相应的内容
    • minidom
    • 看实例movies
  • etree
    • 类似DOM

2. json (EXtensible Markup Language)

  • JSON: JavaScript Object Notation(JavaScript 对象表示法)

  • JSON 是存储和交换文本信息的语法。类似 XML。

  • JSON 是轻量级的文本数据交换格式

  • JSON 比 XML 更小、更快,更易解析。

    • JSON实例
    • 键值对应,类似PYTHON中的字典
      {
      “sites”: [
      { “name”:“菜鸟教程” , “url”:“www.runoob.com” },
      { “name”:“google” , “url”:“www.google.com” },
      { “name”:“微博” , “url”:“www.weibo.com” }
      ]
      }
  • python for json

    • json包
    • json和python对象的转换
      • json.dumps():对数据编码,把python格式表示为json格式
      • json.loads():对数据解码,把python格式表示为python格式
    • python读取json文件
      • json.dump():把内容写入文件
      • json.load():把json文件内容读入python
    • 看实例34_2.py
import json

data = {"name": "Felix", "age": 20}

# 以写的方式打开,如果没有则新建一个
with open('34_2.json', 'w') as f:
    # 将data的内容写入到json文件中
    json.dump(data, f)

# 以读的方式打开文件
with open('34_2.json', 'r') as f:
    # 读取json文件中的内容保存在d中
    d = json.load(f)
    print(d)

**

补充XML文档案例一个

**





    
       War, Thriller
       DVD
       2003
       PG
       10
       Talk about a US-Japan war
    

    
       Anime, Science Fiction
       DVD
       1989
       R
       8
       A schientific fiction
    


from xml.dom.minidom import parse
import xml.dom.minidom

# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse("movies.xml")
# 获取XML文档对象
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
   print ("Root element : %s" % collection.getAttribute("shelf"))

# 在集合中获取所有电影
movies = collection.getElementsByTagName("movie")

# 打印每部电影的详细信息
for movie in movies:
   print ("*****Movie*****")
   if movie.hasAttribute("title"):
      print ("Title: %s" % movie.getAttribute("title"))

   type = movie.getElementsByTagName('type')[0]
   print ("Type: %s" % type.childNodes[0].data)
   format = movie.getElementsByTagName('format')[0]
   print ("Format: %s" % format.childNodes[0].data)
   rating = movie.getElementsByTagName('rating')[0]
   print ("Rating: %s" % rating.childNodes[0].data)
   description = movie.getElementsByTagName('description')[0]
   print ("Description: %s" % description.childNodes[0].data)

你可能感兴趣的:(Python高级语法)