pythonjson解析庫
① 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.mps()為我們提供的兩個方法,以幫助我們更好閱讀文檔。
1.ensure_ascii,能夠讓中文顯示成中文;
2.indent,能夠讓下一行在第一行的基礎上空格。
其用法如下:
② python json快速解析命令
json.mps 用於將 Python 對象編碼成 JSON 字元串。
json.loads 用於解碼 JSON 數據。該函數返回 Python 欄位的數據類型。
demjson.encode() 函數用於將 Python 對象編碼成 JSON 字元串。
demjson.decode() 函數解碼 JSON 數據。該函數返回 Python 欄位的數據類型。
1、以下實例將數組編碼為 JSON 格式數據:
#!/usr/bin/python
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.mps(data)
print json
2、以下實例展示了Python 如何解碼 JSON 對象:
#!/usr/bin/python
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print text
③ python小功能-遞歸解析Json
1
Json格式的介面參數會有多種形式:數組、對象、數組和對象組合模式。
數組的實現方式:
對象的實現方式:
2
將json的參數解析出來並存入參數對象列表中。
3
驗證數組
驗證對象
④ python3.0怎麼用json從文件解析
1、說明:
python3通過json模塊load函數來解析文件。
2、代碼示例:
首先編寫一個json文件j.txt,內容如下:
{"errno":1,"errmsg":"操作成功!","data":[]}
python代碼如下:
importjson
withopen('j.txt','r')asfr:
o=json.load(fr)
print(o['errno'])
print(o['errmsg'])
print(len(o['data']))
輸出如下:
1
操作成功!
0
3、函數說明:
load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
反序列化fp(一個.read()包含 - 支持類文件對象一個JSON文件),以一個Python對象。
object_hook是將與被調用的可選功能任何對象文本解碼(一個``dict``)的結果。返回值object_hook將用來代替dict。此功能可用於實現自定義解碼器(例如JSON-RPC級提示)。
object_pairs_hook是將與被調用的可選功能任何對象的結果與對的有序列表字面解碼。該的返回值object_pairs_hook將用來代替dict。
此功能可用於實現依賴於定製解碼器命令該鍵和值對被解碼(例如,collections.OrderedDict會記得插入的順序)。如果object_hook也定義了object_pairs_hook優先。
要使用自定義JSONDecoder子類,與cls指定它kwarg;否則JSONDecoder使用。
4、其它說明:
也可以使用json.loads函數來直接處理字元串,方法如下:
o=json.loads('{"errno":0,"errmsg":"操作成功!","data":[]}')
⑤ 【Python】淺談python中的json
一 前言
最近一直在做開發相關的工作--基於Django的web 平台,其中需要從model層傳輸數據到view 層做數據展示或者做業務邏輯處理。我們採用通用的Json格式--Json(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於閱讀和程序解析。
二 認識Json
2.1 Json 結構
常見的Json格式為 「名稱/值」對的集合,其中 值可以是對象,列表,字典,字元串等等。比如
backup_data = {"back_to_host": "dbbk0",
"ip_address": "10.10.20.3",
"host_name": "rac4",
"port": 3306}
2.2 使用Json
Python的Json模塊序列化與反序列化的過程分別是 編碼和解碼。這兩個過程涉及到兩組不同的函數
編碼 把一個Python對象編碼轉換成Json字元串,json.mps(data)/json.mp(data,file_handler)
解碼 把Json格式字元串解碼轉換成Python對象,json.loads(data)/json.load(file_handler)
在python中要使用Json模塊做相關操作,必須先導入:
import Json
2.3 主要函數
編碼函數主要有 json.mps(data)/json.mp(data,file_handler)
json.mps()的參數是將python對象轉換為字元串,如使用json.mps序列化的對象json_mps=json.mps({'a':1, 'b':2}) ,json_mps='{"b": 2, "a": 1}'
json.mp 是將內置類型序列化為json對象後寫入文件。
解碼函數主要由json.loads(data)/json.load(file_handler)
json.loads的參數是內存對象,把Json格式字元串解碼轉換成Python對象,json_loads=json.loads(d_json) #{ b": 2, "a": 1},使用load重新反序列化為dict
json.load()的參數針對文件句柄,比如本地有一個文件/tmp/test.json json_load=json.load(open('/tmp/test.json'))
具體案例參考如下:
In [3]: data={"back_to_host": "rac1",
...: "ip_address": "10.215.20.3",
...: "host_name": "rac3",
...: "port": 3306}
In [7]: json_str=json.mps(data)
In [8]: print json_str
{"ip_address": "10.215.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
In [9]: json_loads=json.load(json_str)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-180506f16431> in <mole>()
----> 1 json_loads=json.load(json_str)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
284
285 ""
注意 從上面的報錯信息來看 json.loads 傳參是字元串類型,並不是文件句柄,沒有 read()屬性。
In [10]: json_loads=json.loads(json_str)
In [11]: print json_loads
{u'back_to_host': u'rac1', u'ip_address': u'10.215.20.3', u'host_name': u'rac3', u'port': 3306}
In [12]: type(json_loads)
Out[12]: dict
In [13]: type(json_str)
Out[13]: str
利用mp 將數據寫入 mp.json
In [17]: with open('/tmp/mp.json','w') as f:
...: json.mp(json_str,f)
...:
yangyiDBA:~ yangyi$ cat /tmp/mp.json
"{\"ip_address\": \"10.10.20.3\", \"back_to_host\": \"rac1\", \"host_name\": \"rac3\", \"port\": 3306}"
yangyiDBA:~ yangyi$
利用json.load 將mp.sjon的數據讀出來並賦值給 data
In [18]: with open('/tmp/mp.json','r') as f:
...: data=json.load(f)
...:
In [19]: print data
{"ip_address": "10.10.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
三 小結
本文算是一篇學習筆記,主要對比了json.loads/json.load , json.mps/ json.mp 的使用差異 ,方便以後更好的使用json 。
以上為本次分享內容,感謝觀看。
⑥ python 怎麼解析json
data1 = {'b':789,'c':456,'a':123}
data2 = {'a':123,'b':789,'c':456}
d1 = json.mps(data1,sort_keys=True)
d2 = json.mps(data2)
d3 = json.mps(data2,sort_keys=True)
print d1
print d2
print d3
print d1==d2
⑦ Python網路請求和解析json數據
Python 的 json 模塊提供了兩個函數 json.mps() 和 json.loads() 來編碼和解碼JSON數據。
如果要處理的是文件而不是字元串,可以使用 json.mp() 和 json.load() 來編碼和解碼JSON數據。例如:
⑧ 常用的python庫有哪些
10個頂級且實用的python庫
1、Dash
Dash是比較新的軟體包,它是用純python構建數據可視化app的理想選擇,因此特別適合處理數據的任何人。Dash是Flask、Plotly.js和React.js的混合體。
2、Pygame
Pygame是SDL多媒體庫的python裝飾器,SDL是一個跨平台開發庫,旨在提供對以下內容的低級介面:音頻、鍵盤、滑鼠、游戲桿、基於OpenGL和Direct3D的圖形硬體。
Pygame具有高度的可移植性,幾乎可以在所有平台和操作系統上運行。盡管它具有完善的游戲引擎,但您也可以使用此庫直接從python腳本播放MP3文件。
3、Pillow
Pillow專門用於處理圖像,您可以使用該庫創建縮略圖,在文件格式之間轉換、旋轉、應用濾鏡、顯示圖像等等。如果您需要對許多圖像執行批量操作,這是理想的選擇。
4、Colorama
Colorama允許你在終端使用顏色,非常適合python腳本,文檔簡短而有趣,可以在Colorama PyPi頁面上找到。
5、JmesPath
在python中使用JSON非常容易,因為JSON在python字典上的映射非常好。此外,python帶有自己出色的json庫,用於解析和創建JSON。對我來說,這是它最好的功能之一,如果我需要使用JSON,可以考慮使用python。
JmesPath使python處理JSON更加容易,它允許您明確地指定如何從JSON文檔中提取元素。
6、Requests
Requests建立在世界上下載量最大的python庫urllib3上,它令Web請求變得非常簡單,功能強大且用途廣泛。
Requests可以完成您能想到的所有高級工作,比如:認證,使用cookie,執行POST、PUT、DELETE等,使用自定義證書,使用會話Session、使用代理等。
7、Simplejson
python中的本地json模塊有什麼問題?沒有!實際上,python的json是Simplejson。意思是:python採用了Simplejson的一個版本,並將其合並到每個發行版中,但是使用Simplejson具有一些優點:它適用於更多python版本、它比python隨附的版本更新頻率更高、它具有用C編寫的部分,因此非常快速。
8、Emoji
Emoji庫非常意思,但並非每個人都喜歡表情包,分析視角媒體數據時,Emoji包非常有用。
9、Python-dateutil
Python-dateutil模塊提供了對標准datetime模塊的強大擴展。我的經驗是:常規的python日期時間功能在哪裡結束,而Python-dateutil就出現了。
10、BeautifulSoup
如果您從網站上提取了一些HTML,則需要對其進行解析以獲取實際所需的內容。BeautifulSoup是一個python庫,用於從HTML和XML文件中提取數據。它提供了導航,搜索和修改解析樹的簡單方法。它非常強大,即使損壞了,也能夠處理各種HTML,這是一個非常強大的功能。
它的一些主要功能:
①BeautifulSoup會自動將傳入文檔轉換為Unicode,將傳出文檔轉換為UTF-8,您無需考慮編碼。
②BeautifulSoup位於流行的python解析器的頂部,使您可以嘗試不同的解析策略或提高靈活性。
⑨ jsonpath解析
import json 導入庫
顯示json格式字元串為
顯示對象為list,如下,顯示內容實際為lt
運行後會在本地生成一個json.txt文件
json.txt文件內容為:
顯示為list對象,實際為lt列表如下:
以上方式均為python處理方式
將json格式字元串轉化為js對象
xpath索引下標是從1開始的
jsonpath索引下標是從0開始
方法案例使用:
顯示所有book.json內容,將其轉化為obj對象
顯示:
顯示:
顯示:
顯示:
顯示:
顯示:
顯示:
顯示:
顯示:
以上主要學習將json格式字元串轉化為python對象,然後使用對應方法
⑩ 如何用Python解析多層嵌套的JSON
可以根據jpath解析keyword或路徑。
也可以根據實際結果進行剝洋蔥似的層層解析處理。