使用 Python 处理 JSON 格式的数据


Posted in Python onJuly 22, 2019

如果你不希望从头开始创造一种数据格式来存放数据,JSON 是一个很好的选择。如果你对 Python 有所了解,就更加事半功倍了。下面就来介绍一下如何使用 Python 处理 JSON 数据。

JSON 的全称是 JavaScript 对象表示法 JavaScript Object Notation 。这是一种以键值对的形式存储数据的格式,并且很容易解析,因而成为了一种被广泛使用的数据格式。另外,不要因为 JSON 名称而望文生义,JSON 并不仅仅在 JavaScript 中使用,它也可以在其它语言中使用。下文会介绍它是如何在 Python 中使用的。

首先我们给出一个 JSON 示例:

{
 "name":"tux",
 "health":"23",
 "level":"4"
}

上面是一个和编程语言无关的原生 JSON 数据。熟悉 Python 的人会看出来这个 JSON 数据跟 Python 中的 字典 dictionary 长得很像。而这两者之间确实非常相似,如果你对 Python 中的列表和字典数据结构有一定的理解,那么 JSON 理解起来也不难。

使用字典存放数据

如果你的应用需要存储一些结构复杂的数据,不妨考虑使用 JSON 格式。对比你可能曾经用过的自定义格式的文本配置文件,JSON 提供了更加结构化的可递归的存储格式。同时,Python 自带的 json 模块已经提供了可以将 JSON 数据导入/导出应用时所需的所有解析库。因此,你不需要针对 JSON 自行编写代码进行解析,而其他开发人员在与你的应用进行数据交互的时候也不需要去解析新的数据格式。正是这个原因,JSON 在数据交换时被广泛地采用了。

以下是一段在 Python 中使用嵌套字典的代码:

#!/usr/bin/env python3
import json
# instantiate an empty dict
team = {}
# add a team member
team['tux'] = {'health': 23, 'level': 4}
team['beastie'] = {'health': 13, 'level': 6}
team['konqi'] = {'health': 18, 'level': 7}

这段代码声明了一个名为 team 的字典,并初始化为一个空字典。

如果要给这个字典添加内容,首先需要创建一个键,例如上面示例中的 tux 、 beastie 、 konqi ,然后为这些键一一提供对应的值。上面示例中的值由一个个包含游戏玩家信息的字典充当。

字典是一种可变的变量。字典中的数据可以随时添加、删除或更新。这样的特性使得字典成为了应用程序存储数据的极好选择。

使用 JSON 格式存储数据

如果存放在字典中的数据需要持久存储,这些数据就需要写到文件当中。这个时候就需要用到 Python 中的 json 模块了:

with open('mydata.json', 'w') as f:
 json.dump(team, f)

上面的代码首先创建了一个名为 mydata.json 的文件,然后以写模式打开了这个文件,这个被打开的文件以变量 f 表示(当然也可以用任何你喜欢的名称,例如 file 、 output 等)。而 json 模块中的 dump() 方法则是用于将一个字典输出到一个文件中。

从应用中导出数据就是这么简单,同时这些导出的数据是结构化的、可理解的。现在可以查看导出的数据:

$ cat mydata.json
{"tux": {"health": 23, "level": 4}, "beastie": {"health": 13, "level": 6}, "konqi": {"health": 18, "level": 7}}

从 JSON 文件中读取数据

如果已经将数据以 JSON 格式导出到文件中了,也有可能需要将这些数据读回到应用中去。这个时候,可以使用 Python json 模块中的 load() 方法:

#!/usr/bin/env python3

import json

f = open('mydata.json')
team = json.load(f)
print(team['tux'])
print(team['tux']['health'])
print(team['tux']['level'])
print(team['beastie'])
print(team['beastie']['health'])
print(team['beastie']['level'])
# when finished, close the file
f.close()

这个方法实现了和保存文件大致相反的操作。使用一个变量 f 来表示打开了的文件,然后使用 json 模块中的 load() 方法读取文件中的数据并存放到 team 变量中。

其中的 print() 展示了如何查看读取到的数据。在过于复杂的字典中迭代调用字典键的时候有可能会稍微转不过弯来,但只要熟悉整个数据的结构,就可以慢慢摸索出其中的逻辑。

当然,这里使用 print() 的方式太不灵活了。你可以将其改写成使用 for 循环的形式:

for i in team.values():
 print(i)

使用 JSON

如上所述,在 Python 中可以很轻松地处理 JSON 数据。因此只要你的数据符合 JSON 的模式,就可以选择使用 JSON。JSON 非常灵活易用,下次使用 Python 的时候不妨尝试一下。

via:https://opensource.com/article/19/7/save-and-load-data-python-json

总结

以上所述是小编给大家介绍的使用 Python 处理 JSON 格式的数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python实现简单购物商城
May 21 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
python pandas 如何替换某列的一个值
Jun 09 Python
解决python打不开文件(文件不存在)的问题
Feb 18 Python
Python Celery多队列配置代码实例
Nov 22 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
python手写均值滤波
Feb 19 Python
用python爬虫批量下载pdf的实现
Dec 01 Python
用python写一个定时提醒程序的实现代码
Jul 22 #Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 #Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 #Python
Python定时任务APScheduler的实例实例详解
Jul 22 #Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 #Python
django云端留言板实例详解
Jul 22 #Python
python实现图片中文字分割效果
Jul 22 #Python
You might like
php实现mysql同步的实现方法
2009/10/21 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
PHP递归创建多级目录
2015/11/05 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
CI框架附属类用法分析
2018/12/26 PHP
php实现映射操作实例详解
2019/10/02 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
JS分页效果示例
2013/10/11 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
python添加模块搜索路径方法
2017/09/11 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
师德师风自查材料
2014/10/14 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书