首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

序列化与反序列化

序列化:把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']

import json

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

import json

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

import requests

import json

r.encoding='utf-8'

dic=json.loads(r.text)

print(dic)

执行结果:

关于pickle的应用:

案例4:pickle的dumps和loads

import pickle

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

import pickle

li=["a","b"]

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

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

print(r,type(r))

执行结果:

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

import pickle

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')

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180120A0NQZV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券