json
数据交换,可以跨语言交换,比如php、java等,默认使用规范为双引号。
json类型
Python类型
{}
dict
[]
list
"str"
str
123.45
int或float
true/flase
True/Flase
null
None
json.dumps()
序列号操作,转换为json格式字符串
普通字典转换为字符串做法
# -*- coding: -*-
dic = {'a':"1"}
a = str(dic) #数据转换
print("原来数据类型:",type(dic))
print("转换后数据类型:",type(a))
原来数据类型:
转换后数据类型:
普通字典样式的字符串转字典示例做法
# -*- coding: -*-
A = "{'a':1}"
B = eval(A) #数据转换
print("原来数据类型:",type(A))
print("转换后数据类型:",type(B))
json 字典转换字符串
字符串单引号变双引号,双引号字符串保持不变
import json
dic = {'name':1}
print("转换结果:",json.dumps(dic))
print("转换结果类型:",type(json.dumps(dic)))
转换结果: {"name": 1}
转换结果类型:
json.loads()
反序列化操作,将json格式字符串转换为原来的类型
import json
dic = {'name':1}
a = json.dumps(dic)
#以上为字典转换为json格式的字符串
print("转换结果:",json.loads(a))
print("转换结果类型:",type(json.loads(a)))
转换结果: {'name': 1}
转换结果类型:
Pickle模块
json对比区别
pickle写入内容不可读,pickle支持的数据类型更多
引用
import pickle
方法
转换为字符串类型
pickle.dump
pickle.dumps
转换为原来类型
pickle.load
pickle.loads
shelve模块
shelves写入内容不可读
序列化操作存储
import shelve
a = shelve.open("test")
a["name"] = {"xiaowang"}
自动生成的三个文件
test.bak
test.dat
test.dir
反序列化操作读取
import shelve
a = shelve.open("test")
a["name"] = {"xiaowang"}
print(a.get("name"))
{'xiaowang'}
xml模块,ElementTree解析
测试文件
1
2
3
4
5
标签名称
文档树的根节点标签名称
import xml.etree.ElementTree as ET
tree = ET.parse("XMLConfig.xml") #文档树内存地址
tree_root = tree.getroot() #文档树根的内存地址
print(tree_root.tag) #文档树根的标签
root
标签属性
文档树中各个属性以字典键值对形式输出
# -*- coding: utf8 -*-
import xml.etree.ElementTree as ET
tree = ET.parse("XMLConfig.xml") #文档树内存地址
tree_root = tree.getroot() #文档树根的内存地址
for i in tree_root:
print(i.attrib) #文档树中的分类列表
{'dec': 'list_1'}
{'dec': 'list_2'}
{'dec': 'list_3'}
{'dec': 'list_4'}
{'dec': 'list_5'}
标签内容
# -*- coding: utf8 -*-
import xml.etree.ElementTree as ET
tree = ET.parse("XMLConfig.xml") #文档树内存地址
tree_root = tree.getroot() #文档树根的内存地址
for i in tree_root: #遍历文档树
for j in i: #遍历文档树列表
print(j.text) #文档树遍历文档列表中标签内容
1
None
None
2
None
None
3
4
None
5
None
None
修改内容
# -*- coding: utf8 -*-
import xml.etree.ElementTree as ET
tree = ET.parse("XMLConfig.xml") #文档树内存地址
tree_root = tree.getroot() #文档树根的内存地址
for i in tree_root.iter("test"): #遍历文档树
i.set("test", "new_txt") #文档树遍历文档列表中标签内容 修改
tree.write("XMLConfig2.xml") #保存修改后的文件
修改后
1
2
3
4
5
删除内容
import xml.etree.ElementTree as ET
tree = ET.parse("XMLConfig.xml") #文档树内存地址
tree_root = tree.getroot() #文档树根的内存地址
for i in tree_root.findall("GV"): #遍历文档树第一层
rank = int(i.find("test").text) #第二层查找标签并赋值
if rank > 4: #第二层条件判断
tree_root.remove(i) #不符合条件删除操作
tree.write("XMLConfig2.xml") #保存修改后的文件
删除后
1
2
3
4
生成xml文件
# -*- coding: utf8 -*-
import xml.etree.ElementTree as ET
new_xml = ET.Element("xml_list") #创建文档树根节点
name = ET.SubElement(new_xml,"name",attrib={"test1":"1"}) #在根节点中插入子元素
name = ET.SubElement(new_xml,"name",attrib={"test2":"2"}) #在根节点中插入子元素
et = ET.ElementTree(new_xml) #生成文档对象
ET.dump(new_xml) #打印生成的格式
et.write("test.xml",encoding="utf8",xml_declaration=True) #生成文件
打印出的内容
生成的文件内容