python内置json模块的作用_Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)...-程序员宅基地

技术标签: python内置json模块的作用  

Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)

1、序列化

Python中这种序列化模块有三种:

​ json模块 :

​不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表[1, 2, 3]利用json转化成特殊的字符串,然后在编码成bytes发送给php的开发者,php的开发者就可以解码成特殊的字符串,然后在反解成原数组(列表): [1, 2, 3])

​json序列化只支持部分Python数据结构:dict,list, tuple,str,int, float,True,False,None

​ pickle模块:

​只能是Python语言遵循的一种数据转化格式,只能在python语言中使用。

​支持Python所有的数据类型包括实例化对象。

​ shelve模块:类似于字典的操作方式去操作特殊的字符串。

序列化的本质就是将一种数据结构(如字典,列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化。

(1)序列化模块就是将一个常见的数据结构转化成一个特殊的序列,并且这个特殊的序列还可以反解回去。

(2)主要用途:

<1> 文件读写数据

<2> 网络传输数据

(3)json模块

<1> json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去

<2> 能够序列的数据类型:字典,列表,元组

​4方法 2组

dumps loads ---- 用于网络传输

dump load ---- 用于文件存储

1> dumps、loads

[1] 将字典类型转换成字符串类型

import json

dic = {'k1':'v1','k2':'v2','k3':'v3'}

str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串

print(type(str_dic),str_dic) # {"k3": "v3", "k1": "v1", "k2": "v2"}

#注意,json转换完的字符串类型的字典中的字符串是由""表示的

[2] 将字符串类型的字典转换成字典类型

import json

dic2 = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典

#注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示

print(type(dic2),dic2) # {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}

[3] 还支持列表类型

list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]

str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型

print(type(str_dic),str_dic) # [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]

list_dic2 = json.loads(str_dic)

print(type(list_dic2),list_dic2) # [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]

2> dump、load

[1] 将对象转换成字符串写入到文件当中

import json

f = open('json_file.json','w')

dic = {'k1':'v1','k2':'v2','k3':'v3'}

json.dump(dic,f) #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件

f.close()

# json文件也是文件,就是专门存储json字符串的文件。

[2] 将文件中的字符串类型的字典转换成字典

import json

f = open('json_file.json')

dic2 = json.load(f) #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回

f.close()

print(type(dic2),dic2)

其他参数说明

ensure_ascii:,当它为True的时候,所有非ASCII码字符显示为\uXXXX序列,只需在dump时将ensure_ascii设置为False即可,此时存入json的中文即可正常显示。

separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(,os模块,sys模块,json和pickle模块,logging模块

目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...

模块讲解---os模块,sys模块,json和pickle模块,logging模块

目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...

Python 入门之 内置模块 --logging模块

Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...

Python 入门之 内置模块 -- re模块

Python 入门之 内置模块 -- re模块 1.re 模块 (1)什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类 ...

Python 入门之 内置模块 -- collections模块

Python 入门之 内置模块 -- collections模块 1.collections -- 基于Python自带的数据类型之上额外增加的几个数据类型 from collections ​ 在内 ...

Python 入门之 内置模块 -- hashlib模块

Python 入门之 内置模块 -- hashlib模块 1.hashlib 摘要算法,加密算法 (1)主要用途: <1> 加密 : md5 sha1 sha256 sha512 md5, ...

Python 入门之 内置模块 -- sys模块

Python 入门之 内置模块 -- sys模块 1.sys模块 sys模块是与python解释器交互的一个接口 print(sys.path) #模块查找的顺序 print(sys.argv) # ...

Python 入门之 内置模块 -- os模块

Python 入门之 内置模块 -- os模块 1.os os是和操作系统做交互,给操作发指令 os模块是与操作系统交互的一个接口,它提供的功能多与工作目录,路径,文件等相关 (1)工作路径 prin ...

Python 入门之 内置模块 -- random模块

Python 入门之 内置模块 -- random模块 1.random模块 import random # random -- 随机数 (1)选择1-50之间随机的整数 print(random.r ...

随机推荐

AndroidStudio安装教程&lpar;Windows环境下&rpar;

AndroidStudio官网下载:http://android-studio.org/    可以更具自己喜欢的版本下载,个人推荐2.2版本以上,因为开发和运行效率快,高很多. Android St ...

EventUtil 根据IE自动适配事件

var EventUtil = { addHandler: function (element, type, handler) { if (element.addEventListener) { el ...

【转载】LinkedIn是如何优化Kafka的

http://www.wtoutiao.com/p/18d5RY0.html 在LinkedIn的数据基础设施中,Kafka是核心支柱之一.来自LinkedIn的工程师曾经就Kafka写过一系列的专题 ...

scrapy安装过程问题解决、新建项目、调试断点

一.安装问题 1. 下载速度太慢 使用国外源,下载速度很慢,可以考虑使用豆瓣的镜像下载 pip install -i https://pypi.douban.com/simple/ scrapy 2. ...

weka的基本使用

目录: 1. 简介 2.界面初识 3.数据格式 4.数据准备 5.关联规则 6.分类与回归 7.聚类分析 8.Weka相关资料 9.Weka二次开发 10.Weka源代码导入 1. 简介 WEKA的全 ...

69A

#include int main() { int n; int sum1=0, sum2=0, sum3=0; int x, y, z; scanf("%d ...

python包中&lowbar;&lowbar;init&lowbar;&lowbar;&period;py的作用

1.__init__.py定义包的属性和方法 一般为空文件,但是必须存在,没有__init__.py表明他所在的目录只是目录不是包 2.导入包的时候使用 例如有一个test目录,test下有xx1.p ...

Eloquent JavaScript &num;10&num; Modules

索引 Notes 背景问题 模块Modules 软件包Packages 简易模块 Evaluating data as code CommonJS modules ECMAScript modules ...

同一个线程多次调用start&lpar;&rpar;会出现的问题

结果: 线程首先会运行一次,然后抛出java.lang.IllegalThreadStateException异常. 根据控制台的异常信息,定位到Thread.java的第708行,也就start() ...

centos7更改网卡名

虚拟机中安装centos7,分配两张网卡,安装完成后,使用ip addr 命令查看网卡,发现网卡名称为ens33 和 ens34,不符合平时的使用习惯,想把网卡名改为eth0和eth1,具体操作步骤如 ...

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29457191/article/details/113970315

智能推荐

IntelliJ IDEA(快捷键):解决快捷键Alt+Enter不能使用。_idea alt + enter 无法生成-程序员宅基地

文章浏览阅读9k次,点赞13次,收藏12次。Alt+Enter 快捷键是Idea中比较特殊的一个快捷键。它有很多功能,比如:导包,自动修正代码,解决出现的任何问题,也可以生成返回值。或许 当你不知道怎么写代码的时候,不由自主地就会去 按一下 Alt+Enter。说在前面想快速生成 方法的返回值,死活 Alt+Enter 出不来。当然可以用 Ctrl+Alt+v,来进行 处理 返回值,而且 这个快捷键 还会 自动格式..._idea alt + enter 无法生成

Android - jni - 系统头文件找不到的其中原因之一_android.bp找不到对应so的头文件-程序员宅基地

文章浏览阅读1.6k次。问题描述有时候看到这样真的很扎心,又咋回事了有时突然叫你接手老项目,然后在自己的开发环境上运行,都会出现各种各样的问题,这就是其中之一问题解决在build.gradle中,有个gradle的插件这么一个东西,平时都用不上它,新建项目的时候系统都帮你弄好的了具体可看此文章:Android Gradle dependencies 方式:classpath、implementation、api 的区别这是找不到头文件的版本号修改版本号(根据可以运行的项目,对照一下版本号,直接修改就好了)_android.bp找不到对应so的头文件

superMap创建数据库型数据源的创建过程_supermap创建pg数据库型数据源-程序员宅基地

文章浏览阅读3.6k次。创建独立的表空间:create tablespace data_cs datafile 'D:/tools/oradata/orcl/data_cs.dbf' size 200m autoextend on next 10m uniform size 256k;创建用户:create user cs identified by hdx default tablespace data_cs temp..._supermap创建pg数据库型数据源

【常用】细数那些常用的linux命令(只针对更新前端代码、上传文件到linux服务器)_linux服务器上更新前端包如何操作-程序员宅基地

文章浏览阅读5.2k次。第一步,用Xshelll/Xftp连接远程服务器第二步,cd /路径/路径,如果路径名称记不住可以搭配Tab键第三步,找到对应目录后,可以用ll或者ls来查看当前目录结构第四步,上传本地更新包先安装上传命令yum install lrzsz -y然后rz,会弹出一个本地资源管理器目录窗口,选择好压缩包,上传等待成功后解压第五步,解压unzip 文件名(含后缀)如果没有安装unzip命令,需要yum install -y unzip zip第六步,A(全部覆盖)第七步,各种重启命_linux服务器上更新前端包如何操作

用python做时间序列预测一:初识概念_drift指令的意思 python-程序员宅基地

文章浏览阅读309次。用python做时间序列预测一:初识概念利用时间序列预测方法,我们可以基于历史的情况来预测未来的情况。比如共享单车每日租车数,食堂每日就餐人数等等,都是基于各自历史的情况来预测的。什么是时间序列?时间序列,是指同一个变量在连续且固定的时间间隔上的各个数据点的集合,比如每5分钟记录的收费口车流量,或者每年记录的药物销量都是时间序列。时间序列的类型根据时间间隔的不同,时间序列可以是按年度(Annual)、季度、月度、周、小时、分钟、秒等频率采集的序列。时间序列的成分趋势(Trend),比如长期上涨_drift指令的意思 python

利用Java的动态编译、动态加载结合EasyRules实现业务规则的动态性_java 进行动态规则配置-程序员宅基地

文章浏览阅读1.6w次,点赞19次,收藏57次。作为一名专门写bug的Java程序猿,相信大家都会遇到过这样的问题:项目的业务逻辑很复杂,而且还经常变化,今天的一个办理条件是小于5,明天就变成了大于10或者条件作废。这就很头疼了,里面的数字可以抽取到配置文件,但是大于和小于呢?条件作废呢?对于业务规则的复杂性,我们可以使用一些规则引擎来解决代码可读性差的问题。市面上也有不少的规则引擎框架,开源的不开源的,收费的不收费的,我们这里推荐使用的是..._java 进行动态规则配置

随便推点

python ftp下载上传文件或文件夹_python ftp下载文件-程序员宅基地

文章浏览阅读8.1k次,点赞12次,收藏69次。实际需要,编写一个脚本,通过ftp下载文件或这文件夹。1、包引用使用python自带的包ftplib。from ftplib import FTP添加对中文路径的支持:代码里头设置下 ftp.encoding = 'utf-8'否则,遇到中文路径会报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 24-25: ..._python ftp下载文件

微信支付---热点问题_微信支付的研究热点-程序员宅基地

文章浏览阅读622次。_微信支付的研究热点

动态规划之独立任务最优调度问题_动态规划,单机任务调度-程序员宅基地

文章浏览阅读4.8k次,点赞11次,收藏82次。问题描述给出了每个作业在A、B处理机上处理的时间,我们应该找出所有任务全部完成的调度时间。题目分析题目要求我们设计一个动态规划算法,计算出完成所有作业所用的最短时间。根据我们动态规划的基本框架,先找到状态,然后选择,最终写出状态转移方程。那我们先看一下状态,这里面的状态无非是作业处理时间以及哪个机器来处理作业。所以我们只需要对这几个状态来进行选择。然后写出状态转移方程即可。这道题的状态转移方程有点难想,但是如果从选择的角度就没那么困难。我们应该选择什么呢?这里面无非只有两个机器,所以我们只需_动态规划,单机任务调度

如何使用ArcGIS Pro制作个性三维地形图_arcgis建三维山体-程序员宅基地

文章浏览阅读762次。制作三维地图制作的多了,想着能不能换个“口味”,恰好看见制作六边形蜂窝图,灵光一闪,想着将二者结合,将平滑的三维地形图改成柱状图,从结果来看还可以,这里将制作方法分享给大家,希望能对你有所帮助。在显示的多值提取至点对话框内,输入点要素为生成的中心点,输入栅格为DEM数据,字段名设置为elevation,如下图所示。在显示的生成细分面对话框内,设置输出要素类,范围设置成和DEM数据范围相同,设置合适的六边形大小,如下图所示。在显示的空间连接对话框内,目标要素为生成的六边形,连接要素为中心点,如下图所示。_arcgis建三维山体

欧姆龙PLC如何通过PLC云网关实现远程上下载和维护操作_欧姆龙plc通过路由器-程序员宅基地

文章浏览阅读509次。通道建立好后,就可以通过行业软件(如编程软件、组态软件)对远程设备欧姆龙PLC进行远程程序上下载、远程程序诊断、远程程序监控等维护操作。欧姆龙PLC在各行各业的控制系统中都有应用,如何实现PLC的远程上下载和维护操作成为企业关注的新重点,我们可以借助物通博联PLC云网关、设备维护快线和设备维护平台来进行远程维护操作。3、灵活联网能力:支持5G、4G、WIFI、以太网等通讯方式,灵活部署,适应复杂工业环境。1、丰富协议解析:可兼容西门子、三菱、施耐德、欧姆龙、台达、汇川等各品牌各型号PLC。_欧姆龙plc通过路由器

卡牌接龙 c++_c++3641卡牌-程序员宅基地

该篇文章介绍了使用C++编程实现卡牌接龙游戏的代码。文章中包括引入头文件和代码示例,最后展示了游戏运行的结果。