本文目錄一覽:
- 1、python中為什麼用json有什麼作用
- 2、python 怎麼處理json
- 3、Python爬蟲(七)數據處理方法之JSON
- 4、py3筆記8:json結構的校驗
- 5、python數據結構json
python中為什麼用json有什麼作用
今天我也在這個問題上糾結很久。最後才想明白,我來回答下。
網上很多網友總結了json模塊的用法,但沒說json模塊有什麼用,幹嘛要有這個模塊。可能都明白、太簡單,覺得沒必要說。但作為小白的我不明白,而且在練習使用load()和dump()時遇到錯誤。
首先糾正,json格式不是字符串。json與python裏面的字典是一樣的格式。
python的json模塊四個方法的作用為:
dumps() # 把數據轉成字符串;
loads() # 把字符串符號『』去掉;
dump(x, f) # 將x的內容直接寫入f,不改變格式;
load(x, f) # 讀取f保存為x,同樣不改變格式。
重點來了,f = open()下的read()的方法,輸出是字符串,wirte()方法的輸入也必須是字符串。
結論:因為f=open()下的讀寫方法都必須是字符串,很不方便。而非字符串的數據大多是json格式,所以就有了json模塊。方便讀寫非字符串的數據。
因為這個目的,json模塊的loads()和dumps()方法有些雞肋,還造成困擾,因為明明json不是字符串,幹嘛要轉成字符串,另外dump()和load()方法表面上和它們不一樣。只有明白json模塊的目的,才會搞明白。
在python 3.6的說明文檔中,把json模塊放在了《7.2.文件讀寫》部分。我也是看到這裡才去練習json模塊。但出問題,有些糊塗,明白json模塊的作用後,才更清楚幹嘛把json模塊放這裡。
小白的淺見,若錯誤請指教,謝謝。
python 怎麼處理json
json.dumps()
該函數可以將簡單數據類型(int\float\string\tuple\list\dict\unicode)轉換成JSON格式,樣例代碼如下:
import json
src_data = {“name”:”Tacey”,”age”:13,”sex”:”male”,”interst”:(“Programing”,”Reading”)}
#print repr(src_data)
print json.dumps(src_data)
輸出如下:
{‘interst’:(‘Programing’,’Reading’),’age’:23,’name’:’Tacey’,’sex’:’male’}
{“interst”:[“programing”,”Reading”],”age”:23,”name”:”Tacey”,”sex”:mal”}
2、json.loads()
該函數可以將JSON數據轉換成Python的簡單數據類型,接着上面的代碼:
json_data = json.dumps(src_data)
print json.loads(json_data)[“name”]
輸出結果:
Tacey
Python爬蟲(七)數據處理方法之JSON
JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation),是輕量級的文本數據交換格式,且具有自我描述性,更易理解。
JSON看起來像python類型(列表,字典)的字符串。
在之前的文章中,我們說到了怎麼用response的方法,獲取到網頁正確解碼後的字符串。如果還有不懂的,可以先閱讀 Python爬蟲(三)Requests庫 。接下來以有道翻譯為例子,說說怎麼通過網頁解碼後的字符串,提取到翻譯結果。
再結合上述有道翻譯的例子,得到字典類型的返回結果,並提取出來翻譯結果。
將上述例子的dict_json換成str字符串,再寫入文本中。
執行完上述的程序,會得到一個fanyi.txt的文件,其結果如下:{“type”: “ZH_CN2EN”, “errorCode”: 0, “elapsedTime”: 1, “translateResult”: [[{“src”: “\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528python”, “tgt”: “Life is too short, I use python”}]]}。這樣子的一份文檔,中文部分顯示的是二進制,且格式非常不利於閱讀,這並不是我們想要的結果。好在json.dumps()為我們提供的兩個方法,以幫助我們更好閱讀文檔。
1.ensure_ascii,能夠讓中文顯示成中文;
2.indent,能夠讓下一行在第一行的基礎上空格。
其用法如下:
py3筆記8:json結構的校驗
python中使用json模塊實現python對象與json的轉換
要處理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 來編碼和解碼JSON數據
Json Schema 是一個用於驗證Json數據結構的強大工具
使用範圍: 接口測試中數據值校驗、數據類型校驗、json數據結構校驗
官網:
安裝: pip install jsonschema
type 關鍵字是json模式的基礎,指定架構的數據類型:string、number、object、array、boolean、null
object關鍵字,在python中對應的是dict類型
數組屬性array,用於有序元素
在python中,array類似於list或tuple
在Json,通常有2種方式驗證
1. 列表驗證: 任意長度的序列,其中每個元素匹配相同的模式
2. 元組驗證: 一個固定長度的序列,其中每個項目可能具有不同的模式
1. 列表驗證
2. 元組驗證
針對每一個元素解釋說明,默認校驗schema中設置的前n項
將items關鍵字設置成一個數組, 其中每個項目都是一個與文檔數組的每個索引相對應的模式,
也就是一個數組, 第一個元素模式驗證輸入數組的第一個元素. 第二個元素模式驗證輸入數組的第二個元素
例如, 在以下的模式, anyOf關鍵字用於表示給定值可能對任何給定的子模式有效。第一個子模式需要一個最大長度為5的字符串。第二個子模式需要一個最小值為0的數字。只要一個值對這些模式中的任何一個進行驗證,它就被認為整個組合模式有效。
{ 『anyOf』: [ {『type』: 『string』, 『maxLength』: 5}, {『type』:』string』, 『minimum』: 0 }]}
用於組合模式的關鍵字是:
該$schema關鍵字用於聲明JSON片段實際上是JSON模式的一部分。它還聲明了針對該模式編寫的JSON Schema標準的哪個版本。
建議所有JSON模式都有一個$schema條目,該條目必須位於根目錄下。因此,大多數情況下,您需要在架構的根目錄下:
python數據結構json
simplejson 是不錯的庫,跟json標準庫一樣
simplejson.loads() # json == dict
simplejson.dumps() # dict == json
import simplejson as json
print json.dumps({“name”:”ILOVE爆頭”})
{“name”: “ILOVE\u7206\u5934”}
print json.loads(‘{“name”: “ILOVE\u7206\u5934”}’)[“name”]
ILOVE爆頭
print json.loads(‘{“name”:”ILOVE爆頭”}’)[“name”]
ILOVE爆頭
print json.dumps({“name”:”ILOVE爆頭”, “age”:22},sort_keys=True, indent=” “)
{
“age”: 22,
“name”: “ILOVE\u7206\u5934”
}
可以加Q聯繫:1126918258
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/182271.html