小編寫這篇文章的一個(gè)主要目的,主要是給大家講解關(guān)于Python的一些技能,主要是會(huì)涉及到相關(guān)的一些數(shù)據(jù)問(wèn)題,那么,怎么樣才能夠?qū)崿F(xiàn)序列化的一些操作呢?下面小編就給大家詳細(xì)的去做一個(gè)解答。
在日常開(kāi)發(fā)中,對(duì)數(shù)據(jù)進(jìn)行序列化和反序列化是常見(jiàn)的數(shù)據(jù)操作,Python提供了兩個(gè)模塊方便開(kāi)發(fā)者實(shí)現(xiàn)數(shù)據(jù)的序列化操作,即json模塊和pickle模塊。這兩個(gè)模塊主要區(qū)別如下:
json是一個(gè)文本序列化格式,而pickle是一個(gè)二進(jìn)制序列化格式;
json是我們可以直觀閱讀的,而pickle不可以;
json是可互操作的,在Python系統(tǒng)之外廣泛使用,而pickle則是Python專用的;
默認(rèn)情況下,json只能表示Python內(nèi)置類型的子集,不能表示自定義的類;但pickle可以表示大量的Python數(shù)據(jù)類型。
Json模塊
Json是一種輕量級(jí)的數(shù)據(jù)交換格式,由于其具有傳輸數(shù)據(jù)量小、數(shù)據(jù)格式易解析等特點(diǎn),它被廣泛應(yīng)用于各系統(tǒng)之間的交互操作,作為一種數(shù)據(jù)格式傳遞數(shù)據(jù)。它包含多個(gè)常用函數(shù),具體如下:
dumps()函數(shù)
dumps()函數(shù)可以將Python對(duì)象編碼成Json字符串。例如: #字典轉(zhuǎn)成json字符串加上ensure_ascii=False以后,可以識(shí)別中文,indent=4是間隔4個(gè)空格顯示 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{'sex':'女','addr':'上海','age':24},} print(json.dumps(d,ensure_ascii=False,indent=4)) #執(zhí)行結(jié)果: { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小紅":{ "sex":"女", "addr":"上海", "age":24 } }
dump()函數(shù)
dump()函數(shù)可以將Python對(duì)象編碼成json字符串,自動(dòng)寫入到文件中,不需要再多帶帶寫文件。例如: #字典轉(zhuǎn)成json字符串,不需要寫文件,自動(dòng)轉(zhuǎn)成的json字符串寫入到‘users.json'的文件中 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{'sex':'女','addr':'上海','age':24},} #打開(kāi)一個(gè)名字為‘users.json'的空文件 fw=open('users.json','w',encoding='utf-8') json.dump(d,fw,ensure_ascii=False,indent=4)
loads()函數(shù)
loads()函數(shù)可以將json字符串轉(zhuǎn)換成Python的數(shù)據(jù)類型。例如:
#這是users.json文件中的內(nèi)容 { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小紅":{ "sex":"女", "addr":"上海", "age":24 } } #!/usr/bin/python3 #把json串變成python的數(shù)據(jù)類型 import json #打開(kāi)‘users.json'的json文件 f=open('users.json','r',encoding='utf-8') #讀文件 res=f.read() print(json.loads(res)) #執(zhí)行結(jié)果: {'小明':{'sex':'男','addr':'上海','age':26},'小紅':{'sex':'女','addr':'上海','age':24}}
load()函數(shù)
load()跟loads()功能相似,load()函數(shù)可以將json字符串轉(zhuǎn)換成Python數(shù)據(jù)類型,不同的是前者的參數(shù)是一個(gè)文件對(duì)象,不需要再多帶帶讀此文件。例如:
#把json串變成python的數(shù)據(jù)類型:字典,傳一個(gè)文件對(duì)象,不需要再多帶帶讀文件 import json #打開(kāi)文件 f=open('users.json','r',encoding='utf-8') print(json.load(f)) #執(zhí)行結(jié)果: {'小明':{'sex':'男','addr':'上海','age':26},'小紅':{'sex':'女','addr':'上海','age':24}}
Pickle模塊
Pickle模塊與Json模塊功能相似,也包含四個(gè)函數(shù),即dump()、dumps()、loads()和load(),它們的主要區(qū)別如下:
dumps和dump的區(qū)別在于前者是將對(duì)象序列化,而后者是將對(duì)象序列化并保存到文件中。
loads和load的區(qū)別在于前者是將序列化的字符串反序列化,而后者是將序列化的字符串從文件讀取并反序列化。
dumps()函數(shù)
dumps()函數(shù)可以將數(shù)據(jù)通過(guò)特殊的形式轉(zhuǎn)換為只有python語(yǔ)言認(rèn)識(shí)的字符串,例如:
import pickle #dumps功能 import pickle data=['A','B','C','D'] print(pickle.dumps(data)) b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump()函數(shù)
dump()函數(shù)可以將數(shù)據(jù)通過(guò)特殊的形式轉(zhuǎn)換為只有python語(yǔ)言認(rèn)識(shí)的字符串,并寫入文件。例如:
#dump功能 with open('test.txt','wb')as f: pickle.dump(data,f) print('寫入成功') 寫入成功
loads()函數(shù)
loads()函數(shù)可以將pickle數(shù)據(jù)轉(zhuǎn)換為python的數(shù)據(jù)結(jié)構(gòu)。例如:
#loads功能 msg=pickle.loads(datastr) print(msg) ['A','B','C','D']
load()函數(shù)
load()函數(shù)可以從數(shù)據(jù)文件中讀取數(shù)據(jù),并轉(zhuǎn)換為python的數(shù)據(jù)結(jié)構(gòu)。例如:
#load功能 with open('test.txt','rb')as f: data=pickle.load(f) print(data) ['A','B','C','D']
到此為止,這篇文章就給大家介紹完畢,希望可以給大家?guī)?lái)幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/128286.html
小編寫這篇文章的主要目的,主要還是給大家講解一下關(guān)于Python中CSV文件的相關(guān)內(nèi)容,教給怎么樣去對(duì)大批量的數(shù)據(jù),去進(jìn)行分割。比如如何分割CSV文件呢?下面給大家詳細(xì)解答一下?! ∫?、csv文件介紹 1、csv文件簡(jiǎn)介 逗號(hào)分隔值(Comma-Separated Values,CSV,有時(shí)也稱為字符分隔值,因?yàn)榉指糇址部梢圆皇嵌禾?hào)),其文件以純文本形式存儲(chǔ)表格數(shù)據(jù)(數(shù)字和文本)。純文本...
小編寫這篇文章的一個(gè)主要目的,主要是給大家去做一個(gè)解答,解答的內(nèi)容主要還是python相關(guān)事宜,比如,可以用python正則表達(dá)式去匹配和提取中文漢字,那么,具體的內(nèi)容做法是什么呢?下面就給大家詳細(xì)解答下。 python用正則表達(dá)式提取中文 Python re正則匹配中文,其實(shí)非常簡(jiǎn)單,把中文的unicode字符串轉(zhuǎn)換成utf-8格式就可以了,然后可以在re中隨意調(diào)用 unicode中中...
小編寫這篇文章的一個(gè)主要目的,主要是給大家去做一個(gè)介紹,介紹的內(nèi)容涉及到Python Map函數(shù)的一些使用方法,還會(huì)涉及到一些具體的保姆級(jí)的一些相關(guān)使用教程,具體的內(nèi)容,下面就給大家詳細(xì)解答下?! ”娝苤?,我們?cè)谑褂胮ython的時(shí)候,會(huì)大大的提高我們的一個(gè)工作效率,對(duì)我們工作效率的提高有一個(gè)本質(zhì)的提升?! ∧敲矗疚臅?huì)給大家統(tǒng)一的做個(gè)解答,解答的內(nèi)容還是涉及到相關(guān)的Python Map函數(shù)...
小編寫這篇文章的主要目的,主要是給大家做出一個(gè)講解,講解的內(nèi)容就是關(guān)于Python3中,出現(xiàn)了問(wèn)題該怎么樣去進(jìn)行解答。包括出現(xiàn)SyntaxError:unexpected EOF while parsin這個(gè)問(wèn)題要怎么做,下面給大家詳細(xì)解答一下。 Python錯(cuò)誤SyntaxError:unexpected EOF while parsing原因如下: 1語(yǔ)言用法的問(wèn)題 這種問(wèn)題的話,基...
小編寫這篇文章的主要目的,主要是來(lái)給大家做出一個(gè)比較詳細(xì)解答,主要是給大家解答關(guān)于python中的一些知識(shí),比如Flask實(shí)現(xiàn)接手與上傳圖片,下面就給大家詳細(xì)解答下?! 〗酉聛?lái)給搭建講解Flask如何接受圖片文件,上面是復(fù)雜寫法,下面是簡(jiǎn)單寫法,二選一即可。 思路整理:接收?qǐng)D片->定義一個(gè)圖片存放的位置->給圖片重命名(為了唯一性)->保存操作-&...
閱讀 917·2023-01-14 11:38
閱讀 888·2023-01-14 11:04
閱讀 747·2023-01-14 10:48
閱讀 2025·2023-01-14 10:34
閱讀 954·2023-01-14 10:24
閱讀 829·2023-01-14 10:18
閱讀 504·2023-01-14 10:09
閱讀 581·2023-01-14 10:02