Python JSON格式数据的提取和保存的实现


Posted in Python onMarch 22, 2019

环境:python-3.6.5

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
Python中自带了json模块,直接import json即可使用

官方文档:https://docs.python.org/3/library/json.html

Json在线解析网站:https://www.json.cn/#

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

对象:对象在js中表示为{ }括起来的内容,数据结构为 { key:value, key:value, ... }的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象这几种。
数组:数组在js中是中括号[ ]括起来的内容,数据结构为 ["Python", "javascript", "C++", ...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

json模块使用

json模块提供了四个功能:dumps,dump,load,loads,用于字符串和python数据类型进行转换。

json.loads()

json.loads()方法将JSON文本字符串转换为Python对象,从JSON到Python的类型转化对照如下:

JSON Python
object dict
array list
string unicode
number(int) int
number(real) float
true True
false False
null None

示例:

import json

# JSON文本字符串
str_list = '["a","b","c","d"]'
str_dict = '{"name":"小白","age":1000}'

# json.loads将文本字符串转化为JSON对象,在Python里就是Python对象了
data_list = json.loads(str_list)
data_dict = json.loads(str_dict)

print(type(data_list))
print(type(data_dict))
print(data_list)
print(data_dict)

运行结果:

<class 'list'>
<class 'dict'>
['a', 'b', 'c', 'd']
{'name': '小白', 'age': 1000}

说明:

JSON文本字符串中,数据应该用双引号括起来,不然会报错误,比如上面str_list和str_dict中的值都应该用双引号,数字就不用。

json.dumps

json.dumps()方法实现python类型转化为json字符串,返回一个str对象把一个Python对象编码转换成Json字符串。从Python到JSON的类型转化对照如下:

Python JSON
dict object
list,tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

示例:

import json

data_list = [1,2,3,4]
data_dict = {'name':'小黑','age':1000}

print(json.dumps(data_list))
print(json.dumps(data_dict))

运行结果:

[1, 2, 3, 4]
{"name": "\u5c0f\u9ed1", "age": 1000}

说明:dumps方法可以将Python数据类型转化为JSON文本字符串,但是可以看到当有中文的时候,转换后中文字符都变成Unicode字符,要输出中文需要设置dumps方法的参数ensure_ascii=True设置为ensure_ascii=False。如下:

print(json.dumps(data_dict,ensure_ascii=False))
# 运行结果:{"name": "小黑", "age": 1000}

此外,如果需要将数据保存为文本的时候,还需要指定文件的编码格式为utf-8,比如将上面的data_dict数据(里面有中文字符)保存为data.json文件,代码如下:

with open('data.json','w',encoding='utf-8') as f:
  f.write(json.dumps(data_dict,ensure_ascii=False))

否则打开保存的文件,会有乱码。

如果要处理的是文件而不是字符串,可以使用 json.dump()和json.load()来编码和解码JSON数据。比如:

# 写入数据到文件
data_list = [{'name':'小白'},{'name':'小黑'}]
with open('data2.json','w',encoding='utf-8') as f:
  json.dump(data_list,f,ensure_ascii=False)
# 从文件读取数据
with open('data2.json','r',encoding='utf-8') as f:
data = json.load(f)
print(data)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python与php实现分割文件代码
Mar 06 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
Django应用程序入口WSGIHandler源码解析
Aug 05 Python
django将数组传递给前台模板的方法
Aug 06 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
Python如何实现爬取B站视频
May 20 Python
python中取整数的几种方法
Nov 07 Python
Python3.4解释器用法简单示例
Mar 22 #Python
Python常见数字运算操作实例小结
Mar 22 #Python
详解python校验SQL脚本命名规则
Mar 22 #Python
pymongo中group by的操作方法教程
Mar 22 #Python
Python常用特殊方法实例总结
Mar 22 #Python
pymongo中聚合查询的使用方法
Mar 22 #Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 #Python
You might like
使用PHP计算两个路径的相对路径
2013/06/14 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
php跨域调用json的例子
2013/11/13 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
node跨域请求方法小结
2017/08/25 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
[19:15]DK战队纪录片
2014/09/02 DOTA
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
商得四方公司面试题(gid+)
2014/04/30 面试题
升职演讲稿范文
2014/05/23 职场文书
工商管理本科生求职信
2014/07/13 职场文书
建设工程授权委托书
2014/09/22 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
Pytorch DataLoader shuffle验证方式
2021/06/02 Python