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之开始真正编程
Sep 12 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
Python生成器(Generator)详解
Apr 13 Python
Django中使用group_by的方法
May 26 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python远程邮件控制电脑升级版
May 23 Python
python对接ihuyi实现短信验证码发送
May 10 Python
python推导式的使用方法实例
Feb 28 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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对象类型判断
2008/08/27 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
不安全的常用的js写法
2009/09/15 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
python调用shell的方法
2013/11/20 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Python中整数的缓存机制讲解
2019/02/16 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
keras slice layer 层实现方式
2020/06/11 Python
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
简单说说tomcat的配置
2013/05/28 面试题
护理专科毕业自荐信范文
2014/04/21 职场文书
医德医魂心得体会
2014/09/11 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers
从原生JavaScript到React深入理解
2022/07/23 Javascript