小编写这篇文章的一个主要目的,主要是给大家讲解关于Python的一些技能,主要是会涉及到相关的一些数据问题,那么,怎么样才能够实现序列化的一些操作呢?下面小编就给大家详细的去做一个解答。
在日常开发中,对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即json模块和pickle模块。这两个模块主要区别如下:
json是一个文本序列化格式,而pickle是一个二进制序列化格式;
json是我们可以直观阅读的,而pickle不可以;
json是可互操作的,在Python系统之外广泛使用,而pickle则是Python专用的;
默认情况下,json只能表示Python内置类型的子集,不能表示自定义的类;但pickle可以表示大量的Python数据类型。
Json模块
Json是一种轻量级的数据交换格式,由于其具有传输数据量小、数据格式易解析等特点,它被广泛应用于各系统之间的交互操作,作为一种数据格式传递数据。它包含多个常用函数,具体如下:
dumps()函数
dumps()函数可以将Python对象编码成Json字符串。例如: #字典转成json字符串加上ensure_ascii=False以后,可以识别中文,indent=4是间隔4个空格显示 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24},} print(json.dumps(d,ensure_ascii=False,indent=4)) #执行结果: { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小红":{ "sex":"女", "addr":"上海", "age":24 } }
dump()函数
dump()函数可以将Python对象编码成json字符串,自动写入到文件中,不需要再多带带写文件。例如: #字典转成json字符串,不需要写文件,自动转成的json字符串写入到‘users.json'的文件中 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24},} #打开一个名字为‘users.json'的空文件 fw=open('users.json','w',encoding='utf-8') json.dump(d,fw,ensure_ascii=False,indent=4)
loads()函数
loads()函数可以将json字符串转换成Python的数据类型。例如:
#这是users.json文件中的内容 { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小红":{ "sex":"女", "addr":"上海", "age":24 } } #!/usr/bin/python3 #把json串变成python的数据类型 import json #打开‘users.json'的json文件 f=open('users.json','r',encoding='utf-8') #读文件 res=f.read() print(json.loads(res)) #执行结果: {'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
load()函数
load()跟loads()功能相似,load()函数可以将json字符串转换成Python数据类型,不同的是前者的参数是一个文件对象,不需要再多带带读此文件。例如:
#把json串变成python的数据类型:字典,传一个文件对象,不需要再多带带读文件 import json #打开文件 f=open('users.json','r',encoding='utf-8') print(json.load(f)) #执行结果: {'小明':{'sex':'男','addr':'上海','age':26},'小红':{'sex':'女','addr':'上海','age':24}}
Pickle模块
Pickle模块与Json模块功能相似,也包含四个函数,即dump()、dumps()、loads()和load(),它们的主要区别如下:
dumps和dump的区别在于前者是将对象序列化,而后者是将对象序列化并保存到文件中。
loads和load的区别在于前者是将序列化的字符串反序列化,而后者是将序列化的字符串从文件读取并反序列化。
dumps()函数
dumps()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,例如:
import pickle #dumps功能 import pickle data=['A','B','C','D'] print(pickle.dumps(data)) b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump()函数
dump()函数可以将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件。例如:
#dump功能 with open('test.txt','wb')as f: pickle.dump(data,f) print('写入成功') 写入成功
loads()函数
loads()函数可以将pickle数据转换为python的数据结构。例如:
#loads功能 msg=pickle.loads(datastr) print(msg) ['A','B','C','D']
load()函数
load()函数可以从数据文件中读取数据,并转换为python的数据结构。例如:
#load功能 with open('test.txt','rb')as f: data=pickle.load(f) print(data) ['A','B','C','D']
到此为止,这篇文章就给大家介绍完毕,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128286.html
小编写这篇文章的主要目的,主要还是给大家讲解一下关于Python中CSV文件的相关内容,教给怎么样去对大批量的数据,去进行分割。比如如何分割CSV文件呢?下面给大家详细解答一下。 一、csv文件介绍 1、csv文件简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本...
小编写这篇文章的一个主要目的,主要是给大家去做一个解答,解答的内容主要还是python相关事宜,比如,可以用python正则表达式去匹配和提取中文汉字,那么,具体的内容做法是什么呢?下面就给大家详细解答下。 python用正则表达式提取中文 Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用 unicode中中...
小编写这篇文章的一个主要目的,主要是给大家去做一个介绍,介绍的内容涉及到Python Map函数的一些使用方法,还会涉及到一些具体的保姆级的一些相关使用教程,具体的内容,下面就给大家详细解答下。 众所周知,我们在使用python的时候,会大大的提高我们的一个工作效率,对我们工作效率的提高有一个本质的提升。 那么,本文会给大家统一的做个解答,解答的内容还是涉及到相关的Python Map函数...
小编写这篇文章的主要目的,主要是给大家做出一个讲解,讲解的内容就是关于Python3中,出现了问题该怎么样去进行解答。包括出现SyntaxError:unexpected EOF while parsin这个问题要怎么做,下面给大家详细解答一下。 Python错误SyntaxError:unexpected EOF while parsing原因如下: 1语言用法的问题 这种问题的话,基...
小编写这篇文章的主要目的,主要是来给大家做出一个比较详细解答,主要是给大家解答关于python中的一些知识,比如Flask实现接手与上传图片,下面就给大家详细解答下。 接下来给搭建讲解Flask如何接受图片文件,上面是复杂写法,下面是简单写法,二选一即可。 思路整理:接收图片->定义一个图片存放的位置->给图片重命名(为了唯一性)->保存操作-&...
阅读 889·2023-01-14 11:38
阅读 833·2023-01-14 11:04
阅读 684·2023-01-14 10:48
阅读 1887·2023-01-14 10:34
阅读 892·2023-01-14 10:24
阅读 750·2023-01-14 10:18
阅读 479·2023-01-14 10:09
阅读 519·2023-01-14 10:02