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]}
这样我们就可以获得字典形式的数据并取值。