1. 介紹1.1 介紹
福哥在用Python去讀PHP語(yǔ)言開(kāi)發(fā)的項(xiàng)目的數(shù)據(jù)庫(kù)的時(shí)候,發(fā)現(xiàn)一些字段里存儲(chǔ)的居然是經(jīng)過(guò)PHP的serialize函數(shù)序列化過(guò)的數(shù)據(jù),這個(gè)要解開(kāi)它通過(guò)json庫(kù)是不行的了,怎么辦呢?
原來(lái)Python專門有個(gè)庫(kù)用來(lái)模擬PHP語(yǔ)言的serialize和unserialize的功能,它就是phpserialize庫(kù) 。
2. 安裝phpserialize庫(kù)可以直接通過(guò)pip進(jìn)行安裝 。
pip3 install phpserialize3. 使用3.1 序列化
使用phpserialize庫(kù)序列化一個(gè)結(jié)構(gòu)轉(zhuǎn)化為一個(gè)字符串用到的是dumps方法,用法和json庫(kù)類似,區(qū)別是編碼參數(shù)不是encoding是charset 。
user = { 'id': 35, 'name': "福哥", 'abilities': [ "PHP", "Java", "Python", "JavaScript", "C/C++", "Asp.net" ]}print("原始數(shù)據(jù):")print(user)print("序列化數(shù)據(jù):")userSN = phpserialize.dumps(user, charset="utf-8")print(userSN)

可以看到序列化的結(jié)果和PHP的serialize基本一致 。因?yàn)楦8缭O(shè)置的編碼的UTF-8的,所以“福哥”占用了6個(gè)字符 。
4. 反序列化使用phpserialize庫(kù)反序列化一個(gè)序列化字符串得到原始數(shù)據(jù)結(jié)構(gòu)用的是loads方法,用法和json庫(kù)基本一樣,同樣編碼參數(shù)也是charset而不是我們想象的encoding 。
userSN = b"a:3:{s:2:"id";i:35;s:4:"name";s:6:"xe7xa6x8fxe5x93xa5";s:9:"abilities";a:6:{i:0;s:3:"PHP";i:1;s:4:"Java";i:2;s:6:"Python";i:3;s:10:"JavaScript";i:4;s:5:"C/C++";i:5;s:7:"Asp.net";}}"print("序列化數(shù)據(jù):")print(userSN)print("原始數(shù)據(jù):")user = phpserialize.loads(userSN, charset="utf-8")print(user)
【python項(xiàng)目管理方法 python與php哪個(gè)好】反序列化的時(shí)候最好也加上編碼參數(shù),避免以默認(rèn)編碼反序列化出現(xiàn)錯(cuò)誤的情況 。
5. 總結(jié)福哥今天帶著童鞋們學(xué)習(xí)了Python的phpserialize庫(kù)的使用方法,通過(guò)phpserialize庫(kù)可以讓Python語(yǔ)言擁有解析PHP的序列化數(shù)據(jù)的能力 。
推薦閱讀
- 輸卵管積水的處理方法
- 轉(zhuǎn)基因的鑒別方法
- 解決腿前側(cè)和內(nèi)側(cè)的方法
- 《拳擊俱樂(lè)部》賺錢方法解析攻略 怎么賺錢
- 《拳擊俱樂(lè)部》鱷魚(yú)過(guò)去那個(gè)帶頭套的打開(kāi)方法
- 《拳擊俱樂(lè)部》波波問(wèn)號(hào)任務(wù)完成方法介紹
- 金蝶軟件移到別的電腦上的方法 金蝶k3安裝教程圖解
- 手機(jī)一寸照片制作方法 6寸照片紙打印設(shè)置
- ps打馬賽克快捷方法 ps圖片馬賽克怎么打
- 減掉小粗腿的方法
