python 惰性属性_在Python中处理惰性JSON-“期望属性名称”

我正在使用Python(2.7)’json’模块来处理各种JSON feed。不幸的是,这些提要中的某些不符合JSON标准-

特别是某些键没有用双语音标记(“)包装。这导致Python出现错误。

我想写一个丑陋的代码来解析和修复传入的数据之前,我想问一下-有什么方法可以让Python解析此格式错误的JSON或“修复”数据,以便有效的JSON?

工作实例

import json

>>> json.loads('{"key1":1,"key2":2,"key3":3}')

{'key3': 3, 'key2': 2, 'key1': 1}

破例

import json

>>> json.loads('{key1:1,key2:2,key3:3}')

Traceback (most recent call last):

File "", line 1, in

File "C:\Python27\lib\json\__init__.py", line 310, in loads

return _default_decoder.decode(s)

File "C:\Python27\lib\json\decoder.py", line 346, in decode

obj, end = self.raw_decode(s, idx=_w(s, 0).end())

File "C:\Python27\lib\json\decoder.py", line 362, in raw_decode

obj, end = self.scan_once(s, idx)

ValueError: Expecting property name: line 1 column 1 (char 1)

我编写了一个小的REGEX来修复来自此特定提供程序的JSON,但我认为这将是将来的问题。以下是我的想法。

>>> import re

>>> s = '{key1:1,key2:2,key3:3}'

>>> s = re.sub('([{,])([^{:\s"]*):', lambda m: '%s"%s":'%(m.group(1),m.group(2)),s)

>>> s

'{"key1":1,"key2":2,"key3":3}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值