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中文件遍历的两种方法
Jun 16 Python
跟老齐学Python之玩转字符串(2)
Sep 14 Python
dataframe设置两个条件取值的实例
Apr 12 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python使用Pandas库常见操作详解
Jan 16 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
python 利用toapi库自动生成api
Oct 19 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
Add a Table to a Word Document
2007/06/15 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
js实现简单贪吃蛇游戏
2020/05/15 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
怎么写好自荐信
2013/10/30 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
副总经理岗位职责
2014/03/16 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
居安思危观后感
2015/06/11 职场文书
施工安全责任协议书
2016/03/23 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python
Rust中的Struct使用示例详解
2022/08/14 Javascript