Python常用模块之json、pickle、random、hashlib、collections
1、json和pickle
json用于字符串和Python数据类型间进行转换
pickle用于python特有的类型和python的数据类型间进行转换
json和pickle均提供了四种方法dumps,dump,loads,load
##json
dumps() ##转换成字符串
loads() ##将json编码的字符串再转换为python的数据结构
dump() ##转换成字符串并存存储到文件中
load() ##从数据文件中读取数据,并将json编码的字符串转换为python的数据结构 >>> print(json.dumps(['aa', 'bb', 'cc']))
["aa", "bb", "cc"]
>>> print(json.loads('["aa", "bb", "cc"]'))
['aa', 'bb', 'cc'] ##pickle
dumps() ##将数据通过特殊的形式转换为只有python语言认识的字符串
loads() ##将pickle数据转换为python的数据结构
dump() ##将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
load() ##从数据文件中读取数据,并转换为python的数据结构 >>> print(pickle.dumps(['aa', 'bb', 'cc']))
b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.'
>>> print(pickle.loads(b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.'))
['aa', 'bb', 'cc']
2、random
random.random() ##0~1之间的随机小数
random.uniform(1,3) ##1~3之间的随机小数
random.randint(1,5) ##[1,5]之间的随机整数
random.randrange(1,10,2) ##[1,10) 之间随机奇数,间隔为2的数
random.choice([1,'',[4,5]]) ##随机选择一个返回
random.sample([1,'',[4,5]],2) ##随机选择多个返回,返回的个数为函数的第二个参数
random.shuffle([1,3,5,7,9]) ##打乱列表顺序 ##返回验证码
import random def v_code(): code = ''
for i in range(5): num=random.randint(0,9)
alf=chr(random.randint(65,90))
add=random.choice([num,alf])
code="".join([code,str(add)]) return code print(v_code())
3、hashlib
hashlib提供了常见的摘要算法,如MD5,SHA1等等。
##md5计算
md5 = hashlib.md5("key".encode("utf8")) ##可以添加秘钥,秘钥可以是用户id,这样就算密码相同,加密后的md5也是不一样的
md5.update(b'love fly')
print(md5.hexdigest()) ##SHA1
sha1 = hashlib.sha1("key".encode("utf8"))
sha1.update(b'love fly')
print(sha1.hexdigest()) ##计算MD5
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(b'love fly')
>>> print(md5.hexdigest())
61976ec704dbce25ccb37ecacef1e4d6 ##如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(b'love')
>>> md5.update(b' fly')
>>> print(md5.hexdigest())
61976ec704dbce25ccb37ecacef1e4d6
4、collections
ollections是Python内建的一个集合模块,提供了许多有用的集合类,是python对默认数据结构的一种补充
##namedtuple是一个函数,它用来创建一个自定义的元组对象,并且规定了元组元素的个数,并可以用属性而不是索引来引用元组的某个元素。
>>> from collections import namedtuple
>>> colltuple = namedtuple('colltuple', ['x','y'])
>>> col = colltuple('yong','fly')
>>> col.x
'yong'
>>> col.y
'fly'
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple: 生成可以使用名字来访问元素内容的tuple
2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
3.Counter: 计数器,主要用来计数
4.OrderedDict: 有序字典
5.defaultdict: 带有默认值的字典 ##deque: list插入和删除元素很慢,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。
>>> from collections import deque
>>> q = deque(['a','b','c'])
>>> q.append('d') ##默认添加列表最后一项
>>> q.appendleft('e') ##添加到列表第一项
>>> q
deque(['e', 'a', 'b', 'c', 'd'])
>>> q.pop() ##默认删除列表最后一个元素
'd'
>>> q.popleft() ##删除列表的第一个元素
'e'
>>> q
deque(['a', 'b', 'c']) ##defaultdict使用字典时,如果引用的Key不存在,就会抛出 KeyError,如果希望key不存在时,返回一个默认值,就可以用 defaultdict.
X=defaultdict(lambda: 'N/A')
##OrderedDict有序字典的应用。OrderedDict 的有序性是按照插入的顺序,而不是KEY的顺序。
##Counter简单的计数器,例如,统计字符出现的个数。
Python常用模块之json、pickle、random、hashlib、collections的更多相关文章
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
- Python常用模块sys,os,time,random功能与用法,新手备学。
这篇文章主要介绍了Python常用模块sys,os,time,random功能与用法,结合实例形式分析了Python模块sys,os,time,random功能.原理.相关模块函数.使用技巧与操作注意 ...
- python常用模块之json和pickle模块
json模块 json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 用于解码 JSON 数据.该函数返回 Python 字段的数据类型. pi ...
- Python常用模块之json模块
常用模块: 一个Python文件就是一个模块 import xxx 1. 标准模块,Python自带的,如time/random 2. 第三方模块,如连接mysql,需要安装 3. 自己写的Pytho ...
- Python常用模块之json
本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写. SO ...
- Python——常用模块(time/datetime, random, os, shutil, json/pickcle, collections, hashlib/hmac, contextlib)
1.time/datetime 这两个模块是与时间相关的模块,Python中通常用三种方式表示时间: #时间戳(timestamp):表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. ...
- Python 常用模块(2) 序列化(pickle,shelve,json,configpaser)
主要内容: 一. 序列化概述 二. pickle模块 三. shelve模块 四. json模块(重点!) 五. configpaser模块 一. 序列化概述1. 序列化: 将字典,列表等内容转换成一 ...
- python常用模块之sys, os, random
一. sys模块 1. 作用: sys模块是与python解释器交互的一个接口 2. 具体使用 1. sys.argv 获取当前正在执行的命令行列表, 第一个为程序本身路径 print('file n ...
- json pickle shelve hashlib collections time
import json # Json模块提供了四个功能:dumps.dump.loads.load dic = {'k1':'v1','k2':'v2','k3':'v3'} str_dic = js ...
随机推荐
- 了解WaitForSingleObject中WAIT_ABANDONED 返回值
1.互斥量内核对象 互斥量内核对象用来确保一个线程独占对一个资源的访问.互斥量对象包含一个使用计数.线程ID以及递归计数.互斥量与关键段的行为完全相同.但是互斥量是内核对象,而关键段是用户模式下的同步 ...
- org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported或其他Content type不支持处理
很久没从头到尾搭框架,今天搭的过程中,springmvc controller方法入参用@RequestBody自动绑定参数时一直提示各种 not supported 排查问题有两个解决路径: 1)使 ...
- Python爬虫《爬取get请求的页面数据》
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- 【基础笔记】tomcat安装后运行出现出现问题(the JRE_HOME environment variable is not defined correctly This environment variabl)
之前装好tomcat后正常运行 后来重装系统后,又一次配置环境时却报错. 在网上查找了两篇文章. https://blog.csdn.net/haleyliu123/article/details/ ...
- HTML表单(form)的“enctype”属性
Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...
- ArcGIS Enterprise 10.5.1 静默安装部署记录(Centos 7.2 minimal)- 5、安装Datastore
安装Datastore 解压datastore安装包,tar -xzvf ArcGIS_DataStore_Linux_1051_156441.tar.gz 切换到arcgis账户静默安装server ...
- mac 上配置 maven
1. 将maven压缩包解压至/Users/suqiuhui/Applications目录下的新建文件夹dev下 2. 打开终端(系统根目录,~/下) 3. 如果没有 .bash_profile 文件 ...
- C# 调用 c++ 非托管dll时wchar类型参数的乱码处理
[DllImport("user32.dll", CallingConvention = CallingConvention.WinApi)] public static exte ...
- 思维导图与Spring Batch
最近在学画图,又在复习Spring Batch.不解释,直接上图. 第三章,用XMind画的. 第五章,用iMindMap画的.
- SQL专题
1. 值为null的字段,假如update table set a=a+1,则会报sql错误 2. //todo