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实现ipsec开权限实例
Nov 11 Python
八大排序算法的Python实现
Jan 28 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
Mac中升级Python2.7到Python3.5步骤详解
Apr 27 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
Python正则表达式指南 推荐
Oct 09 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
python中opencv实现图片文本倾斜校正
Jun 11 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轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
Vue自定义指令详解
2017/07/28 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
浅谈小程序globalData的那些事儿
2019/11/01 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python 常见的反爬虫策略
2020/09/27 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
秋季运动会广播稿
2014/02/22 职场文书
教书育人演讲稿
2014/09/11 职场文书
民主评议党员工作总结
2014/10/20 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python
浅谈克隆 JavaScript
2021/11/02 Javascript