一、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、如果涉及到写到文件中,打开方式必须是以字节方式打开

最新文章

  1. Can&#39;t connect to local MySQL server through socket &#39;/var/lib/mysql/mysql.sock&#39;(2)
  2. UVA1625Color Lenth(DP+LCS变形 未AC)
  3. Unable to execute dex: java.nio.BufferOverflowException.解决办法
  4. Verilog之串口(UART)通信
  5. 使用Powershell取出属于某些指定组的用户并导出为csv
  6. Bootstrap栅格系统
  7. cocos2d 中加入显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)
  8. mysql数据库学习(二)--表操作
  9. 基于visual Studio2013解决C语言竞赛题之0406数列求和
  10. tomcat如何避免遭遇ClassNotFoundException
  11. 新版TP-Link无线路由器怎么设置
  12. Centos修改时间为24小时制
  13. EL表达式和JSTL标签库
  14. 螺旋队列和hiho1525逃离迷宫3
  15. 在Windows下搭建Android开发环境及遇到的问题
  16. ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
  17. 新手向-同步关键字synchronized对this、class、object、方法的区别
  18. poj-2528线段树练习
  19. mysql常用的信息查询函数
  20. 【BZOJ2878】【NOI2012】迷失游乐园(动态规划)

热门文章

  1. Verilog杂谈
  2. nsq的erlang客户端
  3. WeX5和BeX5比较
  4. 216. Combination Sum III
  5. 【转】SQL Server sql_variant 类型的比较
  6. MySQL的时间进位问题
  7. jquery源码
  8. struts2请求过程源码分析
  9. lamp.phpstudy.net
  10. Yii 框架中安装 memcache 及配置和测试