json 和 pickel 详解
一、json
json,用于字符串 和 python数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
1、json.loads()用于将字符串形式的字典,列表转换成相应的字典,列表(元祖不可以,应为其他语言中没用元祖)
import json a="[1,2,3,4]"
b='{"k1":1,"k2":2}'#当字符串为字典时{}外面必须是''单引号{}里面必须是""双引号
print(json.loads(a))
print(json.loads(b)) [1, 2, 3, 4]
{'k2': 2, 'k1': 1}
2、json.dumps() 用于将列表,字典,元祖转换成字符串。其中元祖转变成字符串为列表形式
python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串
import json
a = [1,2,3,4]
b ={"k1":1,"k2":2}
c = (1,2,3,4) print(json.dumps(a))
print(json.dumps(b))
print(json.dumps(c))
可以看到这里输出的字符串为普通字符串,但是里面的内容却是unicode字符串的内容
要想得到字符串的真实表示,需要用到参数ensure_ascii=False(默认为True):
import json
b = {"name":"我"}
print(json.dumps(b,ensure_ascii=False)) {"name": "我"}
3、 json.dump()把一个字典或列表以字符串的形式写到文件中
import json
a = [1,2,3,4]
json.dump(a,open("texe.py","w"))
4、json.load() 把在文件中以列表、字典形式保存的字符串元素读出来
import json
a = [1,2,3,4,1]
ap = json.load(open("texe.py"))
print(ap)
二、pickle
pickle 用于【特殊的字节类型】 和 【python数据类型】间进行转换
pickle 模块提供了四个功能:dumps、dump、loads、load
1、pickle.dumps() 用于将python中特有的数据类型转换成特殊的字节类型
import pickle
a = [1,2,3,4]
f = pickle.dumps(a)
print(f)
print(type(f))
h = json.dumps(a) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
<class 'bytes'>
2、 pickle.loads()用于将特殊字节类型转换成python特有的数据类型
import pickle
a = [1,2,3,4]
f = pickle.dumps(a)
print(f)
print(type(f))
print(pickle.loads(f)) b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
<class 'bytes'>
[1, 2, 3, 4]
3、 pickle.dump()把python中特有的数据类型以特殊字节的形式写到文件中(其中文件都是以字节方式打开)
import pickle
a = [1,2,3,4]
pickle.dump(a,open("aaa.py","wb"))
4、json.load() 把在文件中以特殊字节保存的数据读出来
import pickle
ret = [1,2,3,4]
pickle.dump(ret,open("aaa.py","wb"))
p = pickle.load(open("aaa.py","rb"))
print(p)
===================总结=============================
json 1、用于多语言间的相互转换
2、无论是否写到文件中,json都是列表、字典、元祖和字符串之间的相互转换
pickle 1、只适用于python
2、无论是否写到文件中,pickle都是用于python中所有数据类型和只有python才能解析的特殊字节间的相互转换
3、如果涉及到写到文件中,打开方式必须是以字节方式打开
json 和 pickel 详解的更多相关文章
- JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- jmeter之json提取器详解
Json提取器详解 *Apply to:参照正则表达式提取器 *Names of created:自定义变量名. 变量名可以填写多个,变量名之间使用分号进行分隔. 一旦变量名有多个,则下方的json ...
- 小程序2-基本架构讲解(一)JSON配置与详解
项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS 样式文件 .js 后缀的 JS 脚本逻辑文件 JSON 配 ...
- java中Array/List/Map/Object与Json互相转换详解
http://blog.csdn.net/xiaomu709421487/article/details/51456705 JSON(JavaScript Object Notation): 是一种轻 ...
- JSON 语法规则详解
JSON 的语法规则十分简单,无论用何种方法总结都只有数条而已,它参考了 C 语言家族的一些习惯,学习起来并不会感到陌生. 回顾JSON 的五点语法 1)- 数组(Array)用方括号("[ ...
- python 序列化之JSON和pickle详解
JSON模块 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类 ...
- JSON.parse和JSON.stringify 参数详解
JSON.parse和JSON.stringify这两个浏览器自带(IE6/7除外)的方法平常我们经常用到,但是一般都只是用到了他们的第一个参数,比如字符串转对象:JSON.parse('{}') ...
- java中Array/List/Map/Object与Json互相转换详解(转载)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- Linux 命令详解(十一)Shell 解析 json命令jq详解
前言 在自动化部署中涉及到shell脚本需要动态读取很多配置文件,最好是json格式. 更多jq信息: http://stedolan.github.io/jq/manual/ 一.根据key获取va ...
随机推荐
- bzoj3905: Square
Description Nothing is more beautiful than square! So, given a grid of cells, each cell being black ...
- 【转】 远程到服务器安装visualSVN server,出现Service 'VisualSVN Server' failed to start的解决方法
在帮助远程到服务器上安装visualSVN server的时候,出现Service 'VisualSVN Server' failed to start. 解决方法(先不要关闭安装弹出的错误窗口): ...
- ASP.NET运行机制原理
ASP.NET运行机制原理 一.浏览器和服务器的交互原理 (一).浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过 ...
- 黄聪:PHP 免费获取手机号码归属地(转)
一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回 ...
- PLSQL_基础系列06_判断操作NVL / NULLIF / COALESCE / NVL2(案例)
2014-12-08 Created By BaoXinjian
- python(14)类,方法,对象,实例
类: 简单来说就是一个函数的集合,在这个集合里面你定义了很多个函数: 方法:其实就是你定义的这些函数. 对象:简单来说就是自身具有多个属性(也可以说是子变量)的变量而已. 在下面的例子中class P ...
- 防篡改php文件校验程序
<?php /** * 校验线上源文件是否和本地的一致 * User: Administrator * Date: 2015/11/26 * Time: 9:30 */ include_once ...
- CentOS 6.5 网络配置(转载)
From:http://blog.csdn.net/leave00608/article/details/19814063 1.配置网卡IP地址 vim /etc/sysconfig/network- ...
- KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布
Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法.其原假设H0:两个数据分布一致或者数据符合理论分布.D=max| f(x)- g(x)|, ...
- ruby迭代器枚举器
迭代器一个迭代器是一个方法,这个方法里面有yield语句,使用了yield的方法叫做迭代器,迭代器并非一定要迭代,与传递给这个方法的块进行数据传输 yield将数据传给代码快,代码块再把数据传输给yi ...