Parlons de l'implémentation par Python des opérations de sérialisation des données

PHPz
Libérer: 2023-04-12 09:31:12
avant
2067 Les gens l'ont consulté

​Dans le développement quotidien, la sérialisation et la désérialisation des données sont des opérations de données courantes. Python fournit deux modules pour faciliter la mise en œuvre des opérations de sérialisation des données par les développeurs, à savoir le module json et le module pickle. Les principales différences entre ces deux modules sont les suivantes :

  • json est un format de sérialisation de texte, tandis que pickle est un format de sérialisation binaire
  • json peut être lu intuitivement, mais pickle ne le peut pas
  • json est interopérable, largement utilisé à l'extérieur ; le système Python, alors que pickle est exclusif à Python ;
  • Par défaut, json ne peut représenter qu'un sous-ensemble des types intégrés de Python et ne peut pas représenter des classes personnalisées, mais pickle peut représenter une grande quantité de types de données Python.

Parlons de l'implémentation par Python des opérations de sérialisation des données

Module Json

Json est un format d'échange de données léger en raison de ses caractéristiques de petite quantité de données transmises et de sa facilité d'analyse du format de données, il est largement utilisé dans les opérations interactives entre divers systèmes. format de données. Il contient plusieurs fonctions couramment utilisées, comme suit :

fonction dumps()

fonctiondumps() peut encoder des objets Python en chaînes Json. Par exemple : la fonction

#字典转成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
}
}
Copier après la connexion

dump()

dump() peut encoder des objets Python en chaînes json et les écrire automatiquement dans des fichiers, sans avoir besoin d'écrire des fichiers séparés. Par exemple : la fonction

#字典转成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)
Copier après la connexion

loads()

loads() peut convertir la chaîne json en type de données Python. Par exemple : la fonction

#这是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}}
Copier après la connexion

load()

load() a des fonctions similaires àloads(). La fonction load() peut convertir une chaîne json en un type de données Python. La différence est que le paramètre de la première est un. objet fichier et n'a pas besoin d'être lu ce fichier séparément. Par exemple :

#把json串变成python的数据类型:字典,传一个文件对象,不需要再单独读文件 
import json 
#打开文件
f =open('users.json','r',encoding='utf-8') 
print(json.load(f))

#执行结果:
{'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小红': {'sex': '女', 'addr': '上海', 'age': 24}}
Copier après la connexion

Module Pickle

Le module Pickle a des fonctions similaires au module Json et contient également quatre fonctions, à savoir dump(), dumps(),loads() et load(). Leurs principales différences sont les suivantes :

. dumps et La différence entre dump est que le premier sérialise l'objet, tandis que le second sérialise l'objet et l'enregistre dans un fichier.

La différence entre Loads et Load est que le premier désérialise la chaîne sérialisée, tandis que le second lit la chaîne sérialisée à partir du fichier et la désérialise. La fonction

dumps() La fonction

dumps() peut convertir les données en une chaîne reconnue uniquement par le langage Python sous une forme spéciale, par exemple :

import pickle
# dumps功能
import pickle
data = ['A', 'B', 'C','D']
print(pickle.dumps(data))

b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
Copier après la connexion

La fonction dump()

La fonction dump() peut convertir les données via une fonction spéciale. Le formulaire est converti en une chaîne reconnue uniquement par le langage Python et écrit dans un fichier. Par exemple : la fonction

# dump功能
with open('test.txt', 'wb') as f:
pickle.dump(data, f)
print('写入成功')

写入成功
Copier après la connexion

loads()

loads() peut convertir les données pickle en structure de données python. Par exemple : la fonction

# loads功能
msg = pickle.loads(datastr)
print(msg)

['A', 'B', 'C', 'D']
Copier après la connexion

load()

load() peut lire les données d'un fichier de données et les convertir en une structure de données Python. Par exemple :

# load功能
with open('test.txt', 'rb') as f:
 data = pickle.load(f)
print(data)

['A', 'B', 'C', 'D']
Copier après la connexion

Résumé

Cette section vous présente les opérations courantes du module json&pickle en Python, qui prend en charge la sérialisation et la désérialisation des données.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal