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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python生成随机验证码(中文验证码)示例
Apr 03 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
PHP实现发送和接收JSON请求
Jun 07 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
python调用接口的4种方式代码实例
Nov 19 Python
Spring实战之使用util:命名空间简化配置操作示例
Dec 09 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
Python 语言实现六大查找算法
Jun 30 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 set_error_handler()函数使用详解(示例)
2013/11/12 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python实现录音小程序
2020/10/26 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
了解一下python内建模块collections
2020/09/07 Python
Python 中Operator模块的使用
2021/01/30 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
艺术专业大学生自我评价
2013/09/22 职场文书
行政助理岗位职责
2013/11/10 职场文书
办理退休介绍信
2014/01/09 职场文书
婚礼秀策划方案
2014/05/19 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
运动员代表致辞
2015/07/29 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python