摘要:如下運(yùn)行結(jié)果小黑此外,如果需要將數(shù)據(jù)保存為文本的時(shí)候,還需要指定文件的編碼格式為,比如將上面的數(shù)據(jù)里面有中文字符保存為文件,代碼如下否則打開保存的文件,會(huì)有亂碼。
環(huán)境:python-3.6.5JSON
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,它使得人們很容易的進(jìn)行閱讀和編寫。同時(shí)也方便了機(jī)器進(jìn)行解析和生成。適用于進(jìn)行數(shù)據(jù)交互的場(chǎng)景,比如網(wǎng)站前臺(tái)與后臺(tái)之間的數(shù)據(jù)交互。
Python中自帶了json模塊,直接import json即可使用
官方文檔:http://docs.python.org/librar...
Json在線解析網(wǎng)站:http://www.json.cn/#
json簡單說就是javascript中的對(duì)象和數(shù)組,所以這兩種結(jié)構(gòu)就是對(duì)象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。
對(duì)象:對(duì)象在js中表示為{ }括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 { key:value, key:value, ... }的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,所以很容易理解,取值方法為 對(duì)象.key 獲取屬性值,這個(gè)屬性值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象這幾種。json模塊使用數(shù)組:數(shù)組在js中是中括號(hào)[ ]括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["Python", "javascript", "C++", ...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對(duì)象幾種。
json模塊提供了四個(gè)功能:dumps,dump,load,loads,用于字符串和python數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換。
json.loads()
json.loads()方法將JSON文本字符串轉(zhuǎn)換為Python對(duì)象,從JSON到Python的類型轉(zhuǎn)化對(duì)照如下:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number(int) | int |
number(real) | float |
true | True |
false | False |
null | None |
示例:
import json # JSON文本字符串 str_list = "["a","b","c","d"]" str_dict = "{"name":"小白","age":1000}" # json.loads將文本字符串轉(zhuǎn)化為JSON對(duì)象,在Python里就是Python對(duì)象了 data_list = json.loads(str_list) data_dict = json.loads(str_dict) print(type(data_list)) print(type(data_dict)) print(data_list) print(data_dict)
運(yùn)行結(jié)果:
["a", "b", "c", "d"] {"name": "小白", "age": 1000}
說明:
JSON文本字符串中,數(shù)據(jù)應(yīng)該用雙引號(hào)括起來,不然會(huì)報(bào)錯(cuò)誤,比如上面str_list和str_dict中的值都應(yīng)該用雙引號(hào),數(shù)字就不用。
json.dumps
json.dumps()方法實(shí)現(xiàn)python類型轉(zhuǎn)化為json字符串,返回一個(gè)str對(duì)象把一個(gè)Python對(duì)象編碼轉(zhuǎn)換成Json字符串。從Python到JSON的類型轉(zhuǎn)化對(duì)照如下:
Python | JSON |
---|---|
dict | object |
list,tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
示例:
import json data_list = [1,2,3,4] data_dict = {"name":"小黑","age":1000} print(json.dumps(data_list)) print(json.dumps(data_dict))
運(yùn)行結(jié)果:
[1, 2, 3, 4] {"name": "u5c0fu9ed1", "age": 1000}
說明:dumps方法可以將Python數(shù)據(jù)類型轉(zhuǎn)化為JSON文本字符串,但是可以看到當(dāng)有中文的時(shí)候,轉(zhuǎn)換后中文字符都變成Unicode字符,要輸出中文需要設(shè)置dumps方法的參數(shù)ensure_ascii=True設(shè)置為ensure_ascii=False。如下:
print(json.dumps(data_dict,ensure_ascii=False)) # 運(yùn)行結(jié)果:{"name": "小黑", "age": 1000}
此外,如果需要將數(shù)據(jù)保存為文本的時(shí)候,還需要指定文件的編碼格式為utf-8,比如將上面的data_dict數(shù)據(jù)(里面有中文字符)保存為data.json文件,代碼如下:
with open("data.json","w",encoding="utf-8") as f: f.write(json.dumps(data_dict,ensure_ascii=False))
否則打開保存的文件,會(huì)有亂碼。
如果要處理的是文件而不是字符串,可以使用 json.dump()和json.load()來編碼和解碼JSON數(shù)據(jù)。比如:
# 寫入數(shù)據(jù)到文件 data_list = [{"name":"小白"},{"name":"小黑"}] with open("data2.json","w",encoding="utf-8") as f: json.dump(data_list,f,ensure_ascii=False) # 從文件讀取數(shù)據(jù) with open("data2.json","r",encoding="utf-8") as f: data = json.load(f) print(data)參考資料
菜鳥教程:Python3 JSON 數(shù)據(jù)解析
靜覓崔慶才的個(gè)人博客: 5.1.2-JSON文件存儲(chǔ)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43426.html
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...
摘要:學(xué)習(xí)爬蟲的背景了解。但是搜索引擎蜘蛛的爬行是被輸入了一定的規(guī)則的,它需要遵從一些命令或文件的內(nèi)容,如標(biāo)注為的鏈接,或者是協(xié)議。不同領(lǐng)域不同背景的用戶往往具有不同的檢索目的和需求,搜索引擎無法提供針對(duì)具體某個(gè)用戶的搜索結(jié)果。 學(xué)習(xí)python爬蟲的背景了解。 大數(shù)據(jù)時(shí)代數(shù)據(jù)獲取方式 如今,人類社會(huì)已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代,數(shù)據(jù)已經(jīng)成為必不可少的部分,可見數(shù)據(jù)的獲取非常重要,而數(shù)據(jù)的獲取的方式...
摘要:解析的方法,每個(gè)初始完成下載后將被調(diào)用,調(diào)用的時(shí)候傳入從每一個(gè)傳回的對(duì)象來作為唯一參數(shù),主要作用如下負(fù)責(zé)解析返回的網(wǎng)頁數(shù)據(jù),提取結(jié)構(gòu)化數(shù)據(jù)生成生成需要下一頁的請(qǐng)求。 Scrapy 框架 Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛。 框架的力量,用戶只需要定制開發(fā)幾個(gè)模塊就可以輕松的實(shí)現(xiàn)一個(gè)爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常...
摘要:是最有名的爬蟲框架之一,可以很方便的進(jìn)行抓取,并且提供了很強(qiáng)的定制型,這里記錄簡單學(xué)習(xí)的過程和在實(shí)際應(yīng)用中會(huì)遇到的一些常見問題一安裝在安裝之前有一些依賴需要安裝,否則可能會(huì)安裝失敗,的選擇器依賴于,還有網(wǎng)絡(luò)引擎,下面是下安裝的過程下安裝安裝 scrapy是python最有名的爬蟲框架之一,可以很方便的進(jìn)行web抓取,并且提供了很強(qiáng)的定制型,這里記錄簡單學(xué)習(xí)的過程和在實(shí)際應(yīng)用中會(huì)遇到的一...
閱讀 2135·2021-10-14 09:43
閱讀 2197·2019-08-30 15:55
閱讀 726·2019-08-30 14:23
閱讀 2019·2019-08-30 13:21
閱讀 1235·2019-08-30 12:50
閱讀 2199·2019-08-29 18:46
閱讀 2280·2019-08-29 17:28
閱讀 2359·2019-08-29 17:21