Python?json模塊常用方法小結(jié)
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,遵循歐洲計(jì)算機(jī)協(xié)會(huì)制定的 JavaScript 規(guī)范(簡(jiǎn)稱 ECMAScript)。
JSON 易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,能夠有效的提升網(wǎng)信息的傳輸效率,因此它常被作為網(wǎng)絡(luò)、程序之間傳遞信息的標(biāo)準(zhǔn)語(yǔ)言,比如客戶端與服務(wù)器之間信息交互就是以 JSON 格式傳遞的。
簡(jiǎn)單地說(shuō),JSON 可以將 JavaScript 對(duì)象表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串格式,以便于在網(wǎng)絡(luò)、程序間傳輸這個(gè)字符串。并且在需要的時(shí)候,還可以將它轉(zhuǎn)換為編程語(yǔ)言所支持的數(shù)據(jù)格式。本節(jié)主要介紹如何實(shí)現(xiàn) JSON 數(shù)據(jù)與 Python 數(shù)據(jù)類(lèi)型間的相互轉(zhuǎn)換。
Python 語(yǔ)言內(nèi)置了專(zhuān)門(mén)處理 JOSN 數(shù)據(jù)的模塊 —— jons 模塊,通過(guò)該模塊就可以完成 JSON 與 Python 兩種數(shù)據(jù)格式的相互轉(zhuǎn)換。
jons.loads()
該方法可以將 json 格式的字符串轉(zhuǎn)換成 Python 對(duì)象(比如列表、字典、元組、整型以及浮點(diǎn)型),其中最常用的是轉(zhuǎn)換為字典類(lèi)型。示例如下:
# coding:utf8 import json #JOSN字符串 website_info='{"name" : "CSDN","PV" : "2000萬(wàn)","UV" : "800萬(wàn)","create_time" : "1999年"}' py_dict=json.loads(website_info) print("python字典數(shù)據(jù)格式:%s;數(shù)據(jù)類(lèi)型:%s"% (py_dict,type(py_dict)))
輸出結(jié)果:
python字典數(shù)據(jù)格式:{'name': 'CSDN', 'PV': '2000萬(wàn)', 'UV': '800萬(wàn)', 'create_time': '1999年'};數(shù)據(jù)類(lèi)型:<class 'dict'>
注意:上述示例中 JSON 字符串看上去和 Python 字典非常相似,但是其本質(zhì)不同,JOSN 是字符串類(lèi)型,而 Python 字典是 dict 類(lèi)型。
json.dump()
它可以將 Python 對(duì)象(字典、列表等)轉(zhuǎn)換為 json 字符串,并將轉(zhuǎn)換后的數(shù)據(jù)寫(xiě)入到 json 格式的文件中 ,因此該方法必須操作文件流對(duì)象。比如當(dāng)使用爬蟲(chóng)程序完成數(shù)據(jù)抓取后,有時(shí)需要將數(shù)據(jù)保存為 json 格式,此時(shí)就用到了 json.dump() 方法,語(yǔ)法格式如下:
json.dump(object,f,inden=0,ensure_ascii=False)
參數(shù)說(shuō)明如下:
- object:Python 數(shù)據(jù)對(duì)象,比如字典,列表等
- f:文件流對(duì)象,即文件句柄。
- indent:格式化存儲(chǔ)數(shù)據(jù),使 JSON 字符串更易閱讀。
- ensure_ascii:是否使用 ascii 編碼,當(dāng)數(shù)據(jù)中出現(xiàn)中文的時(shí)候,需要將其設(shè)置為 False。
示例示例如下:
import json ditc_info={"name" : "CSDN","PV" : "2000萬(wàn)","UV" : "800萬(wàn)","create_time" : "1999年"} with open("web.josn","a") as f: json.dump(ditc_info,f,ensure_ascii=False)
打開(kāi) web.json 文件,其內(nèi)容如下所示:
{ "name": "CSDN", "PV": "2000萬(wàn)", "UV": "800萬(wàn)", "create_time": "1999年" }
您也可以將 Python 列表轉(zhuǎn)換成 JSON 字符串,并保存至 json 文件中,如下所示:
import json item_list = [] item = {'website': 'CSDN', 'url': "www.CSDN.net"} for k,v in item.items(): item_list.append(v) with open('info_web.json', 'a') as f: json.dump(item_list, f, ensure_ascii=False)
打開(kāi) info_web.json 文件,其內(nèi)容如下:
["CSDN", "www.CSDN.net"]
json.load()
該方法用于操作文件流對(duì)象,不過(guò)它與 dump() 恰好相反,它表示從 json 文件中讀取 JSON 字符串,并將讀取內(nèi)容轉(zhuǎn)換為 Python 對(duì)象。使用示例如下:
import json site = {'name':'CSDN',"url":"www.CSDN.net"} filename = 'website.json' with open (filename,'w') as f: json.dump(site,f,ensure_ascii=False) with open (filename,'r') as f: print(json.load(f))
輸出結(jié)果如下:
{'name': 'CSDN', 'url': 'www.CSDN.net'}
json.dumps()
該方法可以將 Python 對(duì)象轉(zhuǎn)換成 JSON 字符串。示例如下:
import json #python字典 item = {'website': 'CSDN', 'rank': 1} # json.dumps之后 item = json.dumps(item,ensure_ascii=False) print('轉(zhuǎn)換之后的數(shù)據(jù)類(lèi)型為:',type(item)) print(item)
輸出結(jié)果如下:
轉(zhuǎn)換之后的數(shù)據(jù)類(lèi)型為: <class 'str'>
{"website": "CSDN", "url": "www.CSDN.net"}
最后對(duì)上述方法做簡(jiǎn)單地總結(jié),如下表所示:
JSON方法總結(jié)
方法 | 作用 |
---|---|
json.dumps() | 將 Python 對(duì)象轉(zhuǎn)換成 JSON 字符串。 |
json.loads() | 將 JSON 字符串轉(zhuǎn)換成 Python 對(duì)象。 |
json.dump() | 將 Python 中的對(duì)象轉(zhuǎn)化成 JSON 字符串儲(chǔ)存到文件中。 |
json.load() | 將文件中的 JSON 字符串轉(zhuǎn)化成 Python 對(duì)象提取出來(lái)。 |
綜上所述 json.load() 與 json.dump() 操作的是文件流對(duì)象,實(shí)現(xiàn)了 json 文件的讀寫(xiě)操作,而 json.loads() 與 json.dumps() 操作的是 Python 對(duì)象或者 JOSN 字符串。
到此這篇關(guān)于Python json模塊常用方法小結(jié)的文章就介紹到這了,更多相關(guān)Python json模塊常用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch torch.expand和torch.repeat的區(qū)別詳解
這篇文章主要介紹了pytorch torch.expand和torch.repeat的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11感知器基礎(chǔ)原理及python實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了感知器基礎(chǔ)原理及python實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python數(shù)據(jù)抓取爬蟲(chóng)代理防封IP方法
在本篇內(nèi)容里小編給大家分享了關(guān)于Python數(shù)據(jù)抓取爬蟲(chóng)代理防封IP方法講解,需要的朋友們可以跟著學(xué)習(xí)下。2018-12-12如何在Anaconda中打開(kāi)python自帶idle
這篇文章主要介紹了如何在Anaconda中打開(kāi)python自帶idle,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單的猜單詞,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06在Python?中將類(lèi)對(duì)象序列化為JSON
這篇文章主要介紹了在Python?中將類(lèi)對(duì)象序列化為JSON,序列化是將對(duì)象轉(zhuǎn)換為可以在以后保存和檢索介質(zhì)中的過(guò)程,下文具體的內(nèi)容分享,需要的朋友可以參考一下2022-04-04Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12