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实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
python对excel文档去重及求和的实例
Apr 18 Python
利用pandas读取中文数据集的方法
Jul 25 Python
用Python实现读写锁的示例代码
Nov 05 Python
对Python协程之异步同步的区别详解
Feb 19 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
python3实现弹弹球小游戏
Nov 25 Python
Python字符串及文本模式方法详解
Sep 10 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 高手之路(三)
2006/10/09 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
web.py获取上传文件名的正确方法
2014/08/26 Python
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
责任心演讲稿
2014/05/14 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Python Pandas 删除列操作
2022/03/16 Python