資料序列化是指將結構化資料轉換成允許以共享或儲存的格式,並能恢復成原始結構。 在某些情況下,資料序列化的第二個目的是減少資料大小,從而減小對磁碟和頻寬的要求。
在開始序列化資料之前,確定或決定在資料序列化期間如何結構化資料(扁平或巢狀)是非常重要的。 以下示例中顯示了兩種風格的差異
扁平風格:
巢狀風格:
}
repr
python 中的 repr 方法接收單個物件引數,返回輸入的可列印形式:
#扁平文字作為輸入
a =
#相同的輸入可以讀取自檔案
a = open('
/tmp/file.py
', 'r'
)#返回輸入的可列印形式
#輸出也能夠寫入檔案
(repr(a))
#使用repr將內容寫入檔案
with open('
/tmp/file.py
') as f:f.write(repr(a))
ast.literal_eval
literal_eval 方法安全地解析python資料型別表示式並求值。其支援的資料型別有:字串、數字、元組、列表、字典、布林和none。
with open('/tmp/file.py
', '
r') as f: inp = ast.literal_eval(f.read())
python 中的 csv 模組實現了讀取和寫入csv形式的**資料的類。
讀取的簡單例子:
#從檔案中讀取csv資料
import
csvwith open(
'/tmp/file.csv
', newline=''
) as f:
reader =csv.reader(f)
for row in
reader:
print(row)
寫入的簡單例子:
#將csv資料寫入檔案
import
csvwith open(
'/temp/file.csv
', '
w', newline=''
) as f:
writer =csv.writer(f)
writer.writerows(iterable)
python 中有許多第三方庫用來解析和讀取/寫入 yaml 檔案,例子如下:
#使用load方法從檔案中讀取 yaml 內容
import
yaml
with open(
'/tmp/file.yaml
', '
r', newline=''
) as f:
try:
(yaml.load(f))
except
yaml.yamlerror as ymlexcp:
print(ymlexcp)
python 的 json 模組可以用來讀取和寫入 json 模組。示例如下:
讀取:
#從檔案中讀取 json 內容
import
json
with open(
'/tmp/file.json
', 'r'
) as f:
data = json.load(f)
寫入:
#使用 dump 方法將 json 內容寫入檔案
import
json
with open(
'/tmp/file.json
', 'w'
) as f:
json.dump(data, f, sort_keys=true)
python 中 xml 的解析可以使用 xml 庫。
示例:
#從檔案中讀取 xml 內容
import
xml.etree.elementtree as et
tree = et.parse('
country_data.xml')
root = tree.getroot()
python 的 numpy 陣列可以將資料序列化成位元組形式,或從位元組形式的資料反序列化。
示例:
importnumpy as np
#將 numpy 陣列轉換為位元組形式
byte_output = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]).tobytes()
#將位元組形式轉換回 numpy 陣列
array_format = np.frombuffer(byte_output)
python原生的資料序列化模組稱為 pickle 。
示例:
importpickle
#示例字典
grades =
#使用 dumps 將物件轉換為序列化字串
serial_grades =pickle.dumps( grades )
#使用 loads 反序列化為物件
received_grades = pickle.loads( serial_grades )
json格式轉化 序列化 反序列化
json header content type text html charset utf 8 arr name 張三 age 18 name 李四 age 20 arr array array name 張三 age 18 array name 李四 age 28 str serialize a...
MessagePack 序列化格式
messagepack 是一種有效的二進位制序列化格式。與json一樣可以在多語言中轉換資料,但對比json,速度更快,轉換後資料更小。安裝2.編譯安裝 usr bin phpize phpize的路徑 configure make make install 3.在php.ini 中加入 exten...
python pickle資料序列化儲存簡單學習
注 windowns,python2.7 理解 可用來儲存想要儲存的資料,存什麼格式的資料,讀的時候就是什麼資料,和open write只讀寫字串不一樣。使用 匯入模組 import cpickle as pickle 因為新版本的python使用c實現了以前的pickle模組,速度會更快,所以我們...