天天看點

Python 學習筆記 - 序列化和反序列化

這一節看看在Python中如何序列化和反序列化。簡單的說,序列化就是把記憶體中儲存的資料類型轉換為可以存儲或者傳輸的過程,比如說我把一個字典轉換為一個字元串這樣就可以友善傳遞或者儲存了;反序列化則是倒過來,把字元串轉換為對應的資料類型。

Python裡面常用的有兩種方式。

JSON

Pickle

首先來看看JSON,

例1 比如說我有一個字典如下所示:

通過 json.dumps就能轉換為字元串了

倒過來,如何把字元串轉換成對應的結構呢?

可以用json.loads ; 前面學函數的時候學了eval,他也可以的

例2: 調用http request擷取一個天氣的json格式的字元串,然後把他轉換成字典輸出

例3.  序列化,反序列化清單也是可以。反序列化的時候,需要外面用單引号,裡面用雙引号

JSON不僅可以在字元串和資料類型之間轉換,還可以進一步把字元串寫入檔案,或者倒過來。

例如 json.load和json.dump多做了一步檔案的操作

第二個常見的方法是通過pickle

pickle是python自己特有的方法,他會把資料結構轉換為特殊的字元串格式,他的優點是可以支援各種複雜類的操作;而json轉換的字元串是以的程式設計語言都能識别,不過隻能支援基本的資料類型,比如清單,字典等等。

例 可以看見他的字元串是2進制的

是以,當寫入檔案的時候,也需要用2進制格式