python中解析json格式文件的方法示例


Posted in Python onMay 03, 2017

前言

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

本文主要介绍的是python中解析json格式文件的方法,解析json文件无非编码和解码,这里我们用了python下自带的json模块。当然还要结合python本身特有的dict类型的操作。下面来看看详细的介绍吧。

编码

编码用到的是json.dumps()函数,将字典转化为json对象。

import json
data = [{'a':"A",'b':(2,4),'c':3.0}] #list对象
print "DATA:",repr(data)
data_string = json.dumps(data)#dumps函数
print "JSON:",data_string

输出的结果是:

DATA: [{'a':'A','c':3.0,'b':(2,4)}] #python的dict类型的数据是没有顺序存储的
JSON: [{"a":"A","c":3.0,"b":[2,4]}]

解码

解码用json.loads()函数,将json格式转化为dict。

import json
data = '{"a":"A","b":[2,4],"c":3.0}' #json格式
decoded = json.loads(data)
print "DECODED:",decoded

输出的结果是

DECODED: [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]

编码和解码的过程中,元组会被变成无次序的列表,而字典的次序也并不能保证不变。

现在,处理json格式的重点便成了正确处理dict类型数据了。

常见错误

python的json模块不支持单引号,所以类似"{'a':'A','b':[2,4],'c':3.0}"的字符串是会报以下错误的:

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

这时候我们只需要把他单双引号互换即可:

'{"a":"A","b":[2,4],"c":3.0}'

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python使用PyGame模块播放声音的方法
May 20 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
python flask解析json数据不完整的解决方法
May 26 Python
200行python代码实现2048游戏
Jul 17 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
Python列表的切片实例讲解
Aug 20 Python
python 实现任务管理清单案例
Apr 25 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
python requests模块的使用示例
Apr 07 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 #Python
Pycharm学习教程(3) 代码运行调试
May 03 #Python
在centos7中分布式部署pyspider
May 03 #Python
python3读取MySQL-Front的MYSQL密码
May 03 #Python
Python判断变量是否为Json格式的字符串示例
May 03 #Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 #Python
python中字符串类型json操作的注意事项
May 02 #Python
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python集合操作方法详解
2020/02/09 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
大学优秀学生主要事迹材料
2015/11/04 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书