日常の開発では、データのシリアル化と逆シリアル化は一般的なデータ操作です。Python では、開発者がデータのシリアル化操作を実装しやすくするために、json モジュールと pickle モジュールという 2 つのモジュールが提供されています。これら 2 つのモジュールの主な違いは次のとおりです:
Json は、送信されるデータ量が少なく、データ形式の解析が簡単なため、軽量のデータ交換形式です。その特徴を活かし、各種システム間での対話的な運用でデータを転送するデータ形式として広く利用されています。これには、次のような一般的に使用される関数が複数含まれています。
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() 関数は、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() 関数は、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() には、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 モジュールには、Json モジュールと同様の関数があり、さらに 4 つの関数、つまり dump()、dumps()、loads()、load() が含まれています。
ダンプとダンプの違いは、前者はオブジェクトをシリアル化するのに対し、後者はオブジェクトをシリアル化してファイルに保存することです。
ロードとロードの違いは、前者はシリアル化された文字列を逆シリアル化するのに対し、後者はシリアル化された文字列をファイルから読み取って逆シリアル化することです。
dumps() 関数は、データを特別な形式の Python 言語でのみ認識される文字列に変換できます。例:
import pickle # dumps功能 import pickle data = ['A', 'B', 'C','D'] print(pickle.dumps(data)) b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump() 関数は、データを特別な形式の Python 言語でのみ認識される文字列に変換し、ファイルに書き込むことができます。例:
# dump功能 with open('test.txt', 'wb') as f: pickle.dump(data, f) print('写入成功') 写入成功
loads() 関数は、pickle データを Python データ構造に変換できます。例:
# loads功能 msg = pickle.loads(datastr) print(msg) ['A', 'B', 'C', 'D']
load() 関数は、データ ファイルからデータを読み取り、Python データ構造に変換できます。例:
# load功能 with open('test.txt', 'rb') as f: data = pickle.load(f) print(data) ['A', 'B', 'C', 'D']
このセクションでは、データのシリアル化と逆シリアル化のサポートを提供する Python の json&pickle モジュールの一般的な操作を紹介します。
以上がPython のデータシリアル化操作の実装について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。