博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python解析非标准JSON(Key值非字符串)
阅读量:6261 次
发布时间:2019-06-22

本文共 1136 字,大约阅读时间需要 3 分钟。

采集数据的时候经常碰到一些JSON数据的Key值不是字符串,这些数据在JavaScript的上下文中是可以解析的,但在Python中,没有该部分数据的上下文,无法采用json.loads(JSON)的形式导入。在网上搜集来一些方法以便日后使用。

方法一:

def parse_js(expr):    """    解析非标准JSON的Javascript字符串,等同于json.loads(JSON str)    :param expr:非标准JSON的Javascript字符串    :return:Python字典    """    obj = eval(expr, type('Dummy', (dict,), dict(__getitem__=lambda s, n: n))())    return obj

方法二(推荐)

def parse_js(expr):    """    解析非标准JSON的Javascript字符串,等同于json.loads(JSON str)    :param expr:非标准JSON的Javascript字符串    :return:Python字典    """    import ast    m = ast.parse(expr)    a = m.body[0]    def parse(node):        if isinstance(node, ast.Expr):            return parse(node.value)        elif isinstance(node, ast.Num):            return node.n        elif isinstance(node, ast.Str):            return node.s        elif isinstance(node, ast.Name):            return node.id        elif isinstance(node, ast.Dict):            return dict(zip(map(parse, node.keys), map(parse, node.values)))        elif isinstance(node, ast.List):            return map(parse, node.elts)        else:            raise NotImplementedError(node.__class__)    return parse(a)

转载地址:http://jazpa.baihongyu.com/

你可能感兴趣的文章
poj 2186: Popular Cows(tarjan基础题)
查看>>
Front_end - - JavaScript
查看>>
python3+requests:接口自动化测试(二)
查看>>
12月29日-作业
查看>>
c# yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型
查看>>
docker-compose.yml的使用
查看>>
容易犯错的面试题
查看>>
django框架 restful规范 CBV源码分析
查看>>
jdk 配置(已验证,但是并不是完全相同)
查看>>
《代码敲不队》第九次团队作业:Beta冲刺与验收准备
查看>>
迭代器和生成器
查看>>
requests库入门05-参数类型
查看>>
go语言 windows 32位编译环境搭建
查看>>
我的家庭私有云计划-20
查看>>
手把手教你封装属于自己的Windows7安装镜像
查看>>
《作业指导书》的发布管理问题与解决办法
查看>>
55.Azure内容分发网络(CDN)
查看>>
MySQL常见错误代码(error code)及代码说明
查看>>
微软MVP社区巡讲
查看>>
总结一下,MariaDB 10(MySQL5.6企业版分支)的主要新特性
查看>>