Python实现json解析中的问题及解决方法
2014-01-08 10:41
926 查看
介绍几个在实际json解析过程中出现的问题,例子使用上篇Python实现递归解析json
1)对于这样的情况会报错,如下:
这是由于eval不支持null,true,false等,没办法转换为正确的None,True,False。
解决的办法是:定义一个全局的变量,如false=False,再去调用eval就可以正常使用了。
解决方法是:首先在文件开头定义使用utf-8编码。
两种方式:
1)使用循环:即逐层嵌套解析;
2)使用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)
相关文章推荐
- PYTHON中 赋值运算的若干问题总结
- Python实现递归解析json
- Python进制转换(二进制、十进制和十六进制)
- Python 学习入门(35)—— 模块
- Python之IPython
- 用python script将QC Test plan 执行结果导入excel
- Windows下配置Python3+Eric5+Pyqt4 开发环境
- python如何安装pip和easy_installer工具
- /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py
- Python 多线程
- Python_使用csv模块解析csv文件(处理Excel表格)
- Python 与 SQLite
- python 开源机器学习包
- 部门招聘开发人员(python相关)
- python 3 dict函数 神奇的参数规则
- Python:函数
- Python shutil模块学习
- Python 实现一个小功能: 删除某路径下文件及文件夹的脚本
- Python学习第二天
- Windows平台下Python多版本安装总结