Python实现json解析中的问题及解决方法

本文介绍了在实际JSON解析过程中遇到的问题及解决方案,包括使用eval解析时的限制、如何处理中文字典的编码问题,以及如何格式化输出JSON。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

        介绍几个在实际json解析过程中出现的问题,例子使用上篇Python实现递归解析json

        1、eval:将字符串转换成字典

json_demo = eval(line[2])

 

        1)对于这样的情况会报错,如下:

NameError: name 'false' is not defined

        这是由于eval不支持null,true,false等,没办法转换为正确的None,True,False。

        解决的办法是:定义一个全局的变量,如false=False,再去调用eval就可以正常使用了。

false = False

        2、打印中文字典:

        使用上述将字符串转换成字典的方式,会引起字符编码的问题,如果字典中有中文,会这样:

't3': 'target_\xe9\xa6\x96\xe9\xa1\xb5-\xe6\xb5\xb7\xe6\x8a\xa5\xe8\xa7\x86\xe9\xa2\x91\xe7\x82\xb9\xe5\x87\xbb'

        解决方法是:首先在文件开头定义使用utf-8编码。

# -*- coding: utf8 -*-

        两种方式:

        1)使用循环:即逐层嵌套解析;

        2)使用json:

demo_line = json.dumps(json_demo,encoding="UTF-8",ensure_ascii=False)

        打印结果如下:

"t3": "target_首页-海报视频点击"

        3、格式化输出json.

        使用如下方法,就可以将json格式化为非常清晰的样子:

demo_line = json.dumps(json_demo,encoding="UTF-8",ensure_ascii=False,indent=1)


您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值