Python编码,解码和语法检查JSON数据---demjson模块

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]}

这样我们就可以获得字典形式的数据并取值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值