详解Python 序列化Serialize 和 反序列化Deserialize

详解Python 序列化Serialize 和 反序列化Deserialize

序列化(Serialization)是将数据结构或对象状态转换为可以存储或传输的格式的过程。在网络传输、数据存储和编程中经常会使用序列化。Python提供了可以方便地序列化和反序列化数据的标准库模块。

序列化

Python常用的序列化方式有两种:pickle和json。

Pickle

Pickle是一种Python特有的序列化模块,可以将Python中的数据类型转换为序列化后的字节流,也可以反序列化将字节流转换为Python中的数据类型。

下面是一个使用Pickle将Python对象进行序列化的示例:

import pickle

data = [1, 2, 3, {'a': 1, 'b': 2, 'c': 3}]
pickle_data = pickle.dumps(data)
print(pickle_data)

输出结果为:

b'\x80\x04\x95\x1c\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03\x8e\x94}\x94(\x8c\x01a\x94K\x01\x8c\x01b\x94K\x02\x8c\x01c\x94K\x03uu.'

通过pickle.dumps()方法将列表data序列化为字节流,结果为二进制类型。使用pickle.loads()方法将字节流转换为Python数据类型。

pickle_data = b'\x80\x04\x95\x1c\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03\x8e\x94}\x94(\x8c\x01a\x94K\x01\x8c\x01b\x94K\x02\x8c\x01c\x94K\x03uu.'
data = pickle.loads(pickle_data)
print(data)

输出结果为:

[1, 2, 3, {'a': 1, 'b': 2, 'c': 3}]

JSON

JSON是一种轻量级的数据交换格式,支持几乎所有编程语言。Python提供了json模块可以方便地进行JSON字符串和Python数据类型的转换。JSON序列化和反序列化比pickle更安全,可以跨平台使用。

下面是一个使用json将Python对象进行序列化的示例:

import json

data = {'name': 'Tom', 'age': 18, 'skills': ['Python', 'Java', 'C']}
json_data = json.dumps(data)
print(json_data)

输出结果为:

{"name": "Tom", "age": 18, "skills": ["Python", "Java", "C"]}

通过json.dumps()方法将字典data序列化为JSON字符串,结果为字符串类型。使用json.loads()方法将JSON字符串转换为Python数据类型。

json_data = '{"name": "Tom", "age": 18, "skills": ["Python", "Java", "C"]}'
data = json.loads(json_data)
print(data)

输出结果为:

{'name': 'Tom', 'age': 18, 'skills': ['Python', 'Java', 'C']}

反序列化

与序列化对应的是反序列化(Deserialization),将序列化后的字节流或JSON字符串转换为Python数据类型。

下面分别介绍使用Pickle和JSON进行反序列化的方法。

Pickle

使用pickle进行反序列化需要使用pickle.loads()方法,将序列化后的字节流转换为Python数据类型。

import pickle

pickle_data = b'\x80\x04\x95\x1c\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03\x8e\x94}\x94(\x8c\x01a\x94K\x01\x8c\x01b\x94K\x02\x8c\x01c\x94K\x03uu.'
data = pickle.loads(pickle_data)
print(data)

输出结果为:

[1, 2, 3, {'a': 1, 'b': 2, 'c': 3}]

JSON

使用json进行反序列化需要使用json.loads()方法,将序列化后的JSON字符串转换为Python数据类型。

import json

json_data = '{"name": "Tom", "age": 18, "skills": ["Python", "Java", "C"]}'
data = json.loads(json_data)
print(data)

输出结果为:

{'name': 'Tom', 'age': 18, 'skills': ['Python', 'Java', 'C']}

总结

序列化和反序列化是网络传输和数据存储中常用的技术。Python中提供了pickle和json模块方便地进行序列化和反序列化操作,开发者可以根据需求选择使用适合的序列化方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python 序列化Serialize 和 反序列化Deserialize - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python 实现定积分与二重定积分的操作

    下面是Python实现定积分和二重定积分操作的完整攻略: Markdown表达式 在给出使用Python实现定积分和二重积分的操作之前,我们先介绍一下如何在Markdown中表达数学公式和符号。Markdown使用LaTeX语言的数学公式表示法,可以很方便地表示各种数学公式和符号。 行内公式:公式在行内,用 $ 符号包围。 例如:$f(x)=\int_a^b…

    python 2023年6月3日
    00
  • python用字典统计单词或汉字词个数示例

    下面为你提供“Python用字典统计单词或汉字词个数示例”的完整攻略: 1. 实现思路 实现字典统计单词或汉字词个数的方法如下: 将句子或文章拆分成单个字或单词 遍历所有单个字或单词,并将其记录在一个字典中 如果遇到重复的单个字或单词,则将其对应的value加1 2. 示例代码1 下面是一个统计单词个数的示例代码: text = "Hello wo…

    python 2023年5月13日
    00
  • 基于Python制作一款屏幕颜色提取器

    下面是制作屏幕颜色提取器的完整攻略: 1. 准备工作 在制作屏幕颜色提取器之前,我们需要安装 Python 以及一些必要的库,这些库包括 Pillow(用于处理图片)、PyAutoGUI(用于获取鼠标位置)和 webcolors(用于将 RGB 值转换为颜色名称)。我们可以使用以下命令来安装这些库: pip install Pillow PyAutoGUI …

    python 2023年6月3日
    00
  • Python拼接字符串的7种方法总结

    Python拼接字符串的7种方法总结 在Python中,字符串是不可变的对象,因此需要拼接字符串时需要创建一个新的字符串对象。本文总结了7种Python拼接字符串的方法,供学习和参考。 直接运算符拼接 使用”+”运算符可以拼接两个字符串,例如: s1 = "hello" s2 = "world" s = s1 + s2…

    python 2023年5月14日
    00
  • 一行代码让 Python 的运行速度提高100倍

    当我们需要处理一些大规模数据时,Python 在速度上表现往往不如 C++ 或 Java 等编程语言。但是,Python 的一个特性是它允许用户使用外部库,其中一些外部库是用 C++ 或其他高效编程语言编写的。这使得 Python 中的代码可以非常高效,甚至可以接近 C++ 中的代码。因此,使用这些外部库的内置函数,可以使 Python 代码在一些情况下运行…

    python 2023年6月6日
    00
  • Python实现获取视频时长功能

    下面是关于Python实现获取视频时长功能的完整攻略: 安装依赖库 首先,需要安装一个名为pydub的Python库来处理音频文件。可以直接使用pip安装: pip install pydub 获取视频文件 获取视频文件的方式有很多,这里仅提供两种常见的获取方式: 从本地文件获取: from pydub.utils import mediainfo vide…

    python 2023年6月2日
    00
  • 七个Python必备的GUI库

    接下来我将为你详细介绍 “七个Python必备的GUI库”。 1. Tkinter Tkinter是Python标准库自带的图形用户界面(GUI)工具包,它提供了GUI应用所需要的几乎所有功能部件,如:按钮、文本、输入框、标签、复选框等。Tkinter易学易用,支持多平台操作系统,是Python编写GUI程序的首选库。 以下是一个简单的Tkinter GUI…

    python 2023年5月14日
    00
  • Python实现按中文排序的方法示例

    下面我会详细讲解“Python实现按中文排序的方法示例”的完整攻略,包括读取中文字符的方式、安装中文字符排序库、使用中文字符排序库的方法以及两个排序的示例。 读取中文字符 由于中文字符在计算机中的表示方法并不是直接的字符,而是Unicode编码的形式,因此在读取中文字符之前需要先将其转化为Unicode编码。可以采用以下方式读取中文字符: chinese_s…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部