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的Flask框架中验证注册用户的Email的方法
Sep 02 Python
利用Python开发微信支付的注意事项
Aug 19 Python
老生常谈python函数参数的区别(必看篇)
May 29 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python面试题之列表声明实例分析
Jul 08 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
基于Python和C++实现删除链表的节点
Jul 06 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+mysql扎实个人基本功
2008/03/27 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
PDO::rollBack讲解
2019/01/29 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
AngularJS快速入门
2015/04/02 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
javaScript产生随机数的用法小结
2018/04/21 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
python daemon守护进程实现
2016/08/27 Python
使用python实现个性化词云的方法
2017/06/16 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
Amara美国站:英国高端家居礼品网站,世界各地的奢侈家具品牌
2017/07/26 全球购物
给女儿的表扬信
2014/01/18 职场文书
市场调查策划方案
2014/06/10 职场文书
小学数学课题方案
2014/06/15 职场文书
民事赔偿协议书
2014/11/02 职场文书
执行力心得体会范文
2016/01/11 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书