资讯专栏INFORMATION COLUMN

Python怎么实现数据的序列化操作?下面给大家做一个解答

89542767 / 396人阅读

  小编写这篇文章的一个主要目的,主要是给大家讲解关于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文件如何分割?下面大家解答

      小编写这篇文章的主要目的,主要还是给大家讲解一下关于Python中CSV文件的相关内容,教给怎么样去对大批量的数据,去进行分割。比如如何分割CSV文件呢?下面给大家详细解答一下。  一、csv文件介绍  1、csv文件简介  逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本...

    89542767 评论0 收藏0
  • 怎么python正则表达式提取/匹配中文汉字

      小编写这篇文章的一个主要目的,主要是给大家去做一个解答,解答的内容主要还是python相关事宜,比如,可以用python正则表达式去匹配和提取中文汉字,那么,具体的内容做法是什么呢?下面就给大家详细解答下。  python用正则表达式提取中文  Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用  unicode中中...

    89542767 评论0 收藏0
  • Python Map函数保姆级使用教程

      小编写这篇文章的一个主要目的,主要是给大家去做一个介绍,介绍的内容涉及到Python Map函数的一些使用方法,还会涉及到一些具体的保姆级的一些相关使用教程,具体的内容,下面就给大家详细解答下。  众所周知,我们在使用python的时候,会大大的提高我们的一个工作效率,对我们工作效率的提高有一个本质的提升。  那么,本文会给大家统一的做个解答,解答的内容还是涉及到相关的Python Map函数...

    89542767 评论0 收藏0
  • Python3出现SyntaxError:unexpected EOF while parsin错误怎么解答

      小编写这篇文章的主要目的,主要是给大家做出一个讲解,讲解的内容就是关于Python3中,出现了问题该怎么样去进行解答。包括出现SyntaxError:unexpected EOF while parsin这个问题要怎么做,下面给大家详细解答一下。  Python错误SyntaxError:unexpected EOF while parsing原因如下:  1语言用法的问题  这种问题的话,基...

    89542767 评论0 收藏0
  • 怎么使用Flask实现接收与上传图片

    小编写这篇文章的主要目的,主要是来给大家做出一个比较详细解答,主要是给大家解答关于python中的一些知识,比如Flask实现接手与上传图片,下面就给大家详细解答下。  接下来给搭建讲解Flask如何接受图片文件,上面是复杂写法,下面是简单写法,二选一即可。  思路整理:接收图片->定义一个图片存放的位置->给图片重命名(为了唯一性)->保存操作-&...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<