demjson模塊
描述:demjson模塊用於編碼和解碼JSON格式的數據,以及檢查JSOn數據中是否存在錯誤或可移植性問題的方法。
場景說明:
最近在做數據分析時,需要流量數據,於是抓取alexa的網站流量數據。但是通過數據處理得到後的數據是這樣的:
{cate: ["09\u670804\u65e5", "09\u670806\u65e5", "09\u670807\u65e5", "09\u670809\u65e5", "09\u670810\u65e5",
"09\u670811\u65e5", "09\u670817\u65e5", "09\u670818\u65e5", "09\u670819\u65e5", "09\u670820\u65e5",
"09\u670827\u65e5", "09\u670829\u65e5", "10\u670802\u65e5", "10\u670808\u65e5", "10\u670809\u65e5"],
series: [{"name": "\u65e5UV",
"data": [736000, 768000, 672000, 640000, 704000, 992000, 672000, 640000, 640000, 704000, 672000, 4160000,
768000, 736000, 832000]}, {"name": "\u65e5PV",
"data": [6771200, 6451200, 8736000, 3200000, 4224000, 7836800,
5040000, 5696000, 12160000, 5772800, 5107200, 22880000,
5606400, 4563200, 9152000]}],
cate_tip: []
}
雖然得到的是類似於json格式的字符串,但是因爲在字符串中,key不帶引號所以不能使用json.loads()的方法進行解碼。
下一步我想使用正則進行替換,將不帶雙引號的key加上雙引號。但是這樣會遇到各種麻煩(可以自己動手實踐一下)。於是在網上搜索到了這個模塊。
GitHub地址:
demjson
翻譯如下:
demjson是一個Python語言模塊,用於編碼,解碼和語法檢查JSON數據。
它可以在Python 2和Python 3下使用。
它帶有一個jsonlint腳本,該腳本可用於驗證JSON文檔是否嚴格符合JSON規範,並檢測潛在的數據可移植性問題。
它還可以重新格式化或打印漂亮的JSON文檔;
通過重新縮進或刪除不必要的空格
下載安裝
pip install demjson
使用方法
假設一個字符串爲
example = '{a:[1,2,3], b:[4,5,6]}'
此時我們使用json進行解碼會報錯:
>>> import json
>>> example = '{a:[1,2,3], b:[4,5,6]}'
>>> json.loads(example)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
這時我們使用demjson進行解碼:
>>> import demjson
>>> example = '{a:[1,2,3], b:[4,5,6]}'
>>> demjson.decode(example)
{'a': [1, 2, 3], 'b': [4, 5, 6]}
這樣我們就可以獲得字典形式的數據並取值。