Python高级语法——格式化文件——学习心得笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
<?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>80 </score>
</School>
- 保留字符处理
- XML中使用的符号可能跟实际符号相冲突,特别是左右尖括号
- 使用实体引用来表示保留字符
- score>80 会出现错误,XML不能存在这种写法
- score>80 #使用实体引用
- 把含有保留字符的部分放在CDATA模块中,模块内部信息视为不需要转义 <![<![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文档案例一个
**
<?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)
以上是关于Python高级语法——格式化文件——学习心得笔记的主要内容,如果未能解决你的问题,请参考以下文章