首页 > 编程语言 > 详细

第二部分 面向对象 Python28(序列化模块_json、pickle、shelve)及hashlib、logging、configparser模块、异常处理、collections模块

时间:2020-04-22 13:23:46      阅读:68      评论:0      收藏:0      [点我收藏+]

一、json进阶

  json格式的限制:  

    json格式的key必须是字符串数据类型

    json格式中的字符串只能是""

    如果是数字为key,那么dump之后会强行转成字符串数据类型

 

 

技术分享图片技术分享图片
1 import json
2 dic = {1:2,3:4}
3 str_dic = json.dumps(dic)
4 print(str_dic)
5 new_dic = json.loads(str_dic)
6 print(new_dic)
json实例

结果如下:

 技术分享图片

  json是否支持元组,对元组做value的字典会把元组强制转换成列表
技术分享图片技术分享图片
1 import json
2 dic = {abc:(1,2,3)}
3 str_dic = json.dumps(dic)
4 print(str_dic)
5 new_dic = json.loads(str_dic)
6 print(new_dic)
View Code

技术分享图片

  json不支持元组做key
技术分享图片技术分享图片
1 import json
2 dic = {(1,2,3):abc}
3 str_dic = json.dumps(dic)  # 报错
View Code

程序结果:

技术分享图片


  对列表的dump
技术分享图片技术分享图片
1 import json
2 lst = [aaa,123,bbb,12.456]
3 with open(json_demo,w) as f:
4     json.dump(lst,f)
5 with open(json_demo) as f:
6     ret = json.load(f)
7     print(ret)
View Code

程序结果:

技术分享图片


  能不能多次dump数据到文件里,可以多次dump但是不能load出来了
技术分享图片技术分享图片
1 import json
2 dic = {abc:(1,2,3)}
3 lst = [aaa,123,bbb,12.456]
4 with open(json_demo,w) as f:
5     json.dump(lst,f)
6     json.dump(dic,f)
7 with open(json_demo) as f:
8     ret = json.load(f)
9     print(ret)
View Code

程序结果:

技术分享图片

想dump多个数据进入文件,用dumps
技术分享图片技术分享图片
 1 import json
 2 dic = {abc:(1,2,3)}
 3 lst = [aaa,123,bbb,12.456]
 4 with open(json_demo,w) as f:
 5     str_lst = json.dumps(lst)
 6     str_dic = json.dumps(dic)
 7     f.write(str_lst+\n)
 8     f.write(str_dic+\n)
 9 
10 with open(json_demo) as f:
11     for line in f:
12         ret = json.loads(line)
13         print(ret)
View Code

程序结果:

技术分享图片

数据中有中文ensure_ascii = False
技术分享图片技术分享图片
1 import json
2 dic = {abc:(1,2,3),country:中国}
3 ret = json.dumps(dic,ensure_ascii = False)
4 print(ret)
5 dic_new = json.loads(ret)
6 print(dic_new)
7 
8 with open(json_demo,w,encoding=utf-8) as f:
9     json.dump(dic,f,ensure_ascii=False)
View Code

程序结果:

技术分享图片

json的其他参数,是为了用户看的更方便,但是会相对浪费存储空间
技术分享图片技术分享图片
1 import json
2 data = {username:[李华,二愣子],sex:male,age:16}
3 json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(,,:),ensure_ascii=False)
4 print(json_dic2)
View Code

程序结果:

C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe E:/02-面向对象,模块和包/day28/day28/3.序列化模块_json.py
{"abc": [1, 2, 3], "country": "中国"}
{‘abc‘: [1, 2, 3], ‘country‘: ‘中国‘}
{
"age":16,
"sex":"male",
"username":[
"李华",
"二愣子"
]
}

Process finished with exit code 0

 

集合set不能被dump/dumps

技术分享图片技术分享图片
1 import json
2 set1 = {1,2,3}
3 json_set1 = json.dumps(set1)
4 print(json_set1)
5 new_set1= json.loads(json_set1)
6 print(new_set1)
View Code

技术分享图片


 

 

 









第二部分 面向对象 Python28(序列化模块_json、pickle、shelve)及hashlib、logging、configparser模块、异常处理、collections模块

原文:https://www.cnblogs.com/liyong2323/p/12749624.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!