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

本文是关于Python中XML和JSON格式化文件的学习心得笔记,详细介绍了XML的基本概念、文档构成、访问方式,以及JSON的特性与Python操作JSON的方法。通过实例展示了如何在Python中进行XML和JSON的读写操作。
摘要由CSDN通过智能技术生成

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
<?xml version="1.0" encoding="GB18030" ?>
<School type="online" loc="beijing">

    <Teacher>
    <!--我是注释1-->
    <name>Felix</name>
    <age>20</age>
    </Teacher>

    <Student1 type="web">
    <name>Felix</name>
    <age>20</age>
    </Student1>

    <Student2>
    <name>Felix</name>
    <age>20</age>
    </Student2>

    <!--实体引用写法-->
    <score> score&gt;80 </score>

</School>





  • 保留字符处理

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

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

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

      <![<![CDATA[ 内容 ]]>

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

  • XML标签的命名和规则

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

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文档案例一个

**

<?xml version="1.0" encoding="UTF-8" ?>

<collection shelf="New Arrivals">

    <movie title="Enemy Behind">
       <type>War, Thriller</type>
       <format>DVD</format>
       <year>2003</year>
       <rating>PG</rating>
       <stars>10</stars>
       <description>Talk about a US-Japan war</description>
    </movie>

    <movie title="Transformers">
       <type>Anime, Science Fiction</type>
       <format>DVD</format>
       <year>1989</year>
       <rating>R</rating>
       <stars>8</stars>
       <description>A schientific fiction</description>
    </movie>

</collection>
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值