广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现数据的序列化操作详解
  • 303
分享到

Python实现数据的序列化操作详解

2024-04-02 19:04:59 303人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录JSON 模块dumps()函数dump()函数loads()函数load()函数Pickle 模块dumps()函数dump()函数loads()函数load()函数总结​在日

​在日常开发中,对数据进行序列化和反序列化是常见的数据操作,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'\x80\x03]q\x00(X\x01\x00\x00\x00Aq\x01X\x01\x00\x00\x00Bq\x02X\x01\x00\x00\x00Cq\x03X\x01\x00\x00\x00Dq\x04e.'

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

总结

本节给大家介绍 Python 中 json&pickle 模块的常用操作,对于实现数据的序列化和反序列化提供了支撑。

到此这篇关于Python实现数据的序列化操作详解的文章就介绍到这了,更多相关Python数据序列化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现数据的序列化操作详解

本文链接: https://www.lsjlt.com/news/119162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现数据的序列化操作详解
    目录Json 模块dumps()函数dump()函数loads()函数load()函数Pickle 模块dumps()函数dump()函数loads()函数load()函数总结​在日...
    99+
    2022-11-11
  • 聊一聊Python 实现数据的序列化操作
    ​在日常开发中,对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块。这两个模块主要区别如下:json 是一个文本序列化格式,而 pickle 是一个...
    99+
    2023-05-14
    数据 Python 函数
  • 详解Python之数据序列化(json、pickle、shelve)
    一、前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Python也是一样。很多时候我们会有这样的需求: 把内存中的各种数据类型的...
    99+
    2022-06-04
    详解 序列化 数据
  • python序列数据类型之序列数据的基本操作
      1. 序列的长度、最大值、最小值、求和  通过内置函数len()、max() .minO可以获取序列的长度、序列中元索的最大值、序列中元素的最小值。通过内置函数sum()可以获取列表或元组中的各元素之和:如果有非数值元索,则导致TyeE...
    99+
    2023-06-02
  • Pandas处理时间序列数据操作详解
    目录前言一、获取时间二、时间索引三、时间推移前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档。而Pandas是处理...
    99+
    2022-11-11
  • Python怎么实现数据序列化
    这篇文章主要介绍“Python怎么实现数据序列化”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现数据序列化”文章能帮助大家解决问题。在日常开发中,对数据进行序列化和反序列化是常见的...
    99+
    2023-07-06
  • Java利用Jackson序列化实现数据脱敏详解
    目录1.背景2.目标3.主要实现3.1基于Jackson的自定义脱敏序列化实现3.2定义脱敏接口、以及工厂实现3.3常用的脱敏器实现3.4注解定义3.5定义脱敏符号4.使用样例&am...
    99+
    2023-05-13
    Java Jackson序列化实现数据脱敏 Java Jackson序列化 Java 数据脱敏
  • 时间序列预测中的数据滑窗操作实例(python实现)
    目录撰写背景什么是数据滑窗代码实现单特征时间序列多特征时间序列注意事项总结撰写背景 面向数据分析的小白,水平有限,错误难免,欢迎指正。 什么是数据滑窗 进行机器学习时,一般都要涉及到...
    99+
    2022-11-13
  • Python文件的应用之序列化与反序列化详解
    目录初识序列化与反序列化什么是序列化?可序列化的数据类型Python 中的jsondumps() 与 loads() 函数可序列化数据类型演示案例bool 、None 类型的序列化与...
    99+
    2022-11-13
  • 基于MFC实现类的序列化详解
    序列化是将程序中的对象以一种二进制格式存储到存储设备中(例如文本/数据库等),以实现“永生”或随意“流动” 首先定义一个要序列化的类p...
    99+
    2022-11-13
  • 怎么在python中实现序列操作
    今天就跟大家聊聊有关怎么在python中实现序列操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;...
    99+
    2023-06-14
  • Python使用protobuf序列化和反序列化的实现
    protobuf介绍 protobuf是一种二进制的序列化格式,相对于json来说体积更小,传输更快。 安装protobuf 安装protobuf的目的主要用来将proto文件编译成python、c、Java可调...
    99+
    2022-06-02
    Python 序列化和反序列化
  • Python中列表的常用操作详解
    目录打印出列表的数据一、列表的循环遍历1、for循环遍历2、while循环遍历二、列表的添加操作1、append()2、extend()3、insert()三、列表的修改操作四、列表...
    99+
    2022-11-12
  • Python入门基本操作列表排序用法详解
    目录列表的举例1.访问python列表中的元素2.python列表的切片3.python列表的排序4.Python列表元素的添加5.Python列表元素的删除列表是最常用的Pytho...
    99+
    2022-11-12
  • Java实现顺序表的操作详解
    目录一、顺序表是什么二、自定义异常空引用异常下标越界异常三、顺序表的方法顺序表的实现获取顺序表长度顺序表是否为空顺序表是否为满打印顺序表末尾新增元素指定位置新增元素判断是否包含某元素...
    99+
    2022-11-13
  • Java IO流对象的序列化和反序列化实例详解
    Java—IO流 对象的序列化和反序列化序列化的基本操作  1.对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化。  2.序列化流(ObjectOutputStream),writeObject 方法用于将对象写入输出...
    99+
    2023-05-31
    java io流 序列化
  • Ruby序列化和持久化存储(Marshal、Pstore)操作方法详解
    Ruby Marshal序列化 Marshal是Ruby的核心库,可以将一些对象以二进制的方式序列化保存到文件中,需要时再从文件中加载重新构建成对象,即反序列化。 Marshal对数...
    99+
    2022-11-13
  • Python中对数据库的操作详解
    目录一、数据库介绍1、为什么要学习数据库2、数据库的介绍二、MySQL介绍安装MySQL使用数据库1、语法格式2、简单示例三、查看数据库查看MySQL中存在的数据库四、简单示例一、数...
    99+
    2023-02-20
    Python数据库 Python操作数据库
  • SpringBoot结合Redis实现序列化的方法详解
    目录前言配置类配置 Jackson2JsonRedisSerializer 序列化策略配置  RedisTemplate配置缓存策略测试代码完整代码前言 最近在学...
    99+
    2022-11-13
  • 如何使用python实现时间序列预测中的数据滑窗操作
    这篇文章主要为大家展示了“如何使用python实现时间序列预测中的数据滑窗操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用python实现时间序列预测中的数据滑窗操作”这篇文章吧。撰写...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作