前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python模块知识4:序列化Json/pickle

Python模块知识4:序列化Json/pickle

作者头像
企鹅号小编
发布2018-01-11 17:25:01
1.1K0
发布2018-01-11 17:25:01
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

序列化与反序列化

序列化:把Python的基本数据类型转为字符串

反序列化:把字符串转为Python的基本数据类型

Python中用于序列化的两个模块:

json 用于【字符串】和 【python基本数据类型】 间进行转换;由于字符串是各语言通用的,json更适合跨语言;但仅支持dict、list、tuple、str、int、flost、True、False

pickle 用于【python特有的类型】 和 【python基本数据类型】间进行转换,支持任何类型,更适合所有类型的序列化,比如面向对象

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

关于json:

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

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

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

案例1:json转换过程,dumps、loads;内部涉及字符串的时候一定要使用双引号,如li=["a","b"],而不是li=['a','b']

importjson

dic={"k1":"v1","k2":"v2"}

print('dic',dic,type(dic))

result=json.dumps(dic)# 将python基本数据类型转为字符串

print('result',result,type(result))

dic2=json.loads(result)#将字符串转为基本数据类型 ,

print('dic2',dic2,type(dic2))

执行结果:

案例2:json读取并写入文件中,dump、load

importjson

li=["a","b"]

json.dump(li,open('db','w'))#执行结果,db文件中写入li的内容

r=json.load(open('db','r'))#读文件操作

print(r,type(r))

执行结果:

['a', 'b']

案例3:基于天气的API获取天气相关的json

执行结果:

关于pickle的应用:

案例4:pickle的dumps和loads

importpickle

dic={"k1":"v1","k2":"v2"}

print('dic',dic,type(dic))

result=pickle.dumps(dic)# 将python基本数据类型转为字节

print('result',result,type(result))

dic2=pickle.loads(result)#将字符串转为基本数据类型

print('dic2',dic2,type(dic2))

执行结果:

案例5-1:pickle的写入文件和导出文件,类型需要加b

importpickle

li=["a","b"]

pickle.dump(li,open('hh','wb'))#类型需要加b

r=pickle.load(open('hh','rb'))#读文件操作,需要加b

print(r,type(r))

执行结果:

案例5-2:修改导入文件的内容

importpickle

account_info={'a1':['hh',222,20],

'a2':['rr',444,40]

}

pickle.dump(account_info,open('acc.pkl','wb'))

t=pickle.load(open('acc.pkl','rb'))

print('初次导入',t,type(t))

#修改字典中的一个值,重新存储,再次调用

account_info['a2'][1]=555

account_info['a2'][2]=50

pickle.dump(account_info,open('acc.pkl','wb'))

f=pickle.load(open('acc.pkl','rb'))

print("修改值",f,type(f))

#添加一个新的字段

account_info['a3']=['ppp',666,60]

pickle.dump(account_info,open('acc.pkl','wb'))

y=pickle.load(open('acc.pkl','rb'))

print("添加新的值",y,type(y))

案例5-3:对象的pickle使用

案例5-4:jupyter上使用pickle

new_data.to_pickle('C:\\data_0921.pickle')

new_data = pd.read_pickle('C:\\data_0921.pickle')

本文来自企鹅号 - 乐想屋媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 乐想屋媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档