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 ...
随机推荐
- Wpf ListView展示风格
ListView数据绑定控件,通常是竖列展示,也可以通过改变ListView的布局来改变它的展示方式 如图展示: 主要需用修改的样式如下: <!--GridView Header样式 去除Gri ...
- 融云会话界面导航上移-使用IQKeyboardManager
关于IQKeyBoardManager挤出导航栏的解决方案 方法一: 写在前面 虽然修改后能解决导航栏被挤出去的问题,但是就目前来看是有副作用的,写这篇文章就是想大家来一起讨论,毕竟键盘处理还是比较头 ...
- spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式
spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...
- 实用的随机数生成类Random:测试(随机产生100个不重复的正整数)
实用的随机数生成类Random:测试(使用Random类随机生成100个不重复的正整数) 一.之前我们使用随机数用的是Math类的random()方法: tips: 产生随机数(0~9中任意整数)的方 ...
- Java 枚举 获取前后元素,下一个元素
https://blog.csdn.net/jiangshanwe/article/details/79119219
- 【Spring Cloud】与Spring Boot版本匹配关系
Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...
- HIVE的sql语句操作
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- 深入理解Javascript之执行上下文(Execution Context)
在这篇文章中,将比较深入地阐述下执行上下文 - Javascript中最基础也是最重要的一个概念.相信读完这篇文章后,你就会明白javascript引擎内部在执行代码以前到底做了些什么,为什么某些函数 ...
- Oracle 修改任何用户的密码
1.通过sys用户以sysdba身份登陆: 2.修改用户密码: alter user 用户名 identified by 密码; 比如修改system的密码为 manager : alter use ...
- SELECT * FROM pet WHERE name REGEXP 'w';
To find names containing a “w”, use this query: SELECT * FROM pet WHERE name REGEXP 'w';