溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中提取JSON格式數(shù)據(jù)

發(fā)布時間:2021-04-20 16:56:21 來源:億速云 閱讀:820 作者:Leah 欄目:開發(fā)技術

怎么在Python中提取JSON格式數(shù)據(jù)?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

python可以做什么

Python是一種編程語言,內(nèi)置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。

JSON

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用于進行數(shù)據(jù)交互的場景,比如網(wǎng)站前臺與后臺之間的數(shù)據(jù)交互。
Python中自帶了json模塊,直接import json即可使用

json簡單說就是javascript中的對象和數(shù)組,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復雜的結(jié)構(gòu)。

對象:對象在js中表示為{ }括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 { key:value, key:value, ... }的鍵值對的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是數(shù)字、字符串、數(shù)組、對象這幾種。
數(shù)組:數(shù)組在js中是中括號[ ]括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為 ["Python", "javascript", "C++", ...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數(shù)字、字符串、數(shù)組、對象幾種。

json模塊使用

json模塊提供了四個功能:dumps,dump,load,loads,用于字符串和python數(shù)據(jù)類型進行轉(zhuǎn)換。

json.loads()

json.loads()方法將JSON文本字符串轉(zhuǎn)換為Python對象,從JSON到Python的類型轉(zhuǎn)化對照如下:

JSONPython
objectdict
arraylist
stringunicode
number(int)int
number(real)float
trueTrue
falseFalse
nullNone

示例:

import json

# JSON文本字符串
str_list = '["a","b","c","d"]'
str_dict = '{"name":"小白","age":1000}'

# json.loads將文本字符串轉(zhuǎn)化為JSON對象,在Python里就是Python對象了
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)

運行結(jié)果:

<class 'list'>
<class 'dict'>
['a', 'b', 'c', 'd']
{'name': '小白', 'age': 1000}

說明:

JSON文本字符串中,數(shù)據(jù)應該用雙引號括起來,不然會報錯誤,比如上面str_list和str_dict中的值都應該用雙引號,數(shù)字就不用。

json.dumps

json.dumps()方法實現(xiàn)python類型轉(zhuǎn)化為json字符串,返回一個str對象把一個Python對象編碼轉(zhuǎn)換成Json字符串。從Python到JSON的類型轉(zhuǎn)化對照如下:

PythonJSON
dictobject
list,tuplearray
strstring
int, float, int- & float-derived Enumsnumber
Truetrue
Falsefalse
Nonenull

示例:

import json

data_list = [1,2,3,4]
data_dict = {'name':'小黑','age':1000}

print(json.dumps(data_list))
print(json.dumps(data_dict))

運行結(jié)果:

[1, 2, 3, 4]
{"name": "\u5c0f\u9ed1", "age": 1000}

說明:dumps方法可以將Python數(shù)據(jù)類型轉(zhuǎn)化為JSON文本字符串,但是可以看到當有中文的時候,轉(zhuǎn)換后中文字符都變成Unicode字符,要輸出中文需要設置dumps方法的參數(shù)ensure_ascii=True設置為ensure_ascii=False。如下:

print(json.dumps(data_dict,ensure_ascii=False))
# 運行結(jié)果:{"name": "小黑", "age": 1000}

此外,如果需要將數(shù)據(jù)保存為文本的時候,還需要指定文件的編碼格式為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))

否則打開保存的文件,會有亂碼。

如果要處理的是文件而不是字符串,可以使用 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)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI