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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python re模块的高级用法详解
Jun 06 Python
Face++ API实现手势识别系统设计
Nov 21 Python
200行python代码实现2048游戏
Jul 17 Python
python之生产者消费者模型实现详解
Jul 27 Python
详解python中*号的用法
Oct 21 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
基于python图像处理API的使用示例
Apr 03 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
Django url 路由匹配过程详解
Jan 22 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php 清除网页病毒的方法
2008/12/05 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
php json相关函数用法示例
2017/03/28 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python实现从订阅源下载图片的方法
2015/03/11 Python
Python使用minidom读写xml的方法
2015/06/03 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
基于python 字符编码的理解
2017/09/02 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python如何查看安装了的模块
2020/06/23 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
就业表自我评价分享
2014/02/06 职场文书
校庆口号
2014/06/20 职场文书
信仰心得体会
2014/09/05 职场文书
导游词之神仙居景区
2019/11/15 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
用Python爬取某乎手机APP数据
2021/06/15 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL