Python3 常用模块2
time 模块
time 模块提供了三种不同类型的时间, 三种不同类型的时间可以相互转换
时间戳形式
print(time.time()) # 1569668018.1848686
格式化时间
print(time.strftime('%Y-%m-%d %X')) # 2019-01-28 18:55:25
结构化时间
print(time.localtime()) # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=28, tm_hour=18, tm_min=57, tm_sec=9, tm_wday=5, tm_yday=271, tm_isdst=0)
time.time()
获取当前时间的时间戳, 既表示从1970年1月1日00:00:00开始按秒计算的偏移量。
time.sleep()
推迟指定的时间运行下面的代码, 单位为秒
datetime 模块
datetime模块可以进行时间的加减
import datetime
# 获取当前时间
now = datetime.datetime.now()
print(now) # 2019-01-20 19:05:59.401263
# 当前时间加三天
print(now + datetime.timedelta(3)) # 2019-01-23 19:05:59.401263
# 当前时间加三周
print(now + date.time.timedelta(weeks=3)
# 当前时间加三小时
print(now + datetime.timedelta(hours=3))
# 替换时间
print(now.replace(year=1949, month=10, day=1, hour=10, minute=1, second=0, microsecond=0)) # 1949-10-01 10:01:00
random 模块
import random
# 0-1随机数
print(random.random()) # 0.37486363608725715
# 随机整数(包含两头)
print(random.randint(1,3)) # 1
# 打乱
lis = [1, 2, 3]
random.shuffle(lis)
print(lis) # [1, 3, 2]
# 随机选择一个
print(random.choice(lis)) # 1
# 让括号内放入不会变化的数据如2, 则每次打印结果相同; 放入一直变化的数据如time.time()则每次打印结果不同
random.seed(2)
print(random.random)
# 随机选择样本
print(random.sample(['a', 'b', 'c'],2) # ['b', 'c']
hashlib 模块 和 hmac 模块
对字符加密: 字符---哈希算法---> 一串hash值
特点:
- 只要传入内容一样, 得到的hash值就一样
- 不能由hash值反解成内容
- 只要hash算法不变, 得到的hash值长度是固定的
import hashlib
m = hashlib.md5()
print(m)
m.update(b'password')
print(m.hexdigest()) # 5f4dcc3b5aa765d61d8327deb882cf99
撞库破解hash算法加密
# 已知密码可能为下面的一个
real_pwd_hash = '5f4dcc3b5aa765d61d8327deb882cf99'
pwd_list = [
'password',
'password123',
'123passsword'
]
find = False
for pwd in pwd_list:
m = hashlib.md5()
m.update(pwd.encoding('utf-8'))
pwd_hash = m.hexdigest()
if pwd_hash == real_pwd_hash:
continue
print(f'用户密码为: {pwd}')
find = True
if not find:
print('未发现密码')
# 用户密码为: password
hmac 模块可以对我们处理过的内容再次加密, 既相当于密匙, 可以防止被装库
typing 模块
与函数联用, 控制函数参数的数据类型, 提供了基础数据类型之外的数据类型
from typing import Iterable, Iterator, Generator
def func(x: int, lis:Iterable) -> list:
requests 模块
模拟浏览器对url发送请求, 拿到数据
import requests
response=requests.get(r'https://baidu.com')
data = response.text
print(data)
re 模块
正则表达式: 去字符串中找到符合某种特点的字符串
元字符
import re
s = 'abcdabc'
# ^ : 以...开头
res = re.findall('^ab', s)
print(res)
# $ : 以...结尾
res = re.findall('bc$',s)
print(res)
# . : 任意字符
res = re.findall('abc.',s)
print(res)
# \d : 数字
s = 'abc123def'
res = re.findall('\d', s)
print(res)
# \w : 非空, 数字字母下划线
s = 'abc_123 456 def'
res = re.findall('\w', s)
print(res)
# \s : 空, 空格,\t和\n
s = 'abc_123 456 def'
res = re.findall('\s', s)
print(res)
# + : 其前面的一个字符至少有一个
s = 'abcddd abcd abc'
res = re.findall('abcd+', s)
print(res)
# ? : 表示前面的一个字符至少为0个
s = 'abcddd abcd abc'
res = re.findall('abcd?', s)
print(res)
# [] : 中括号内元素的都可以
s = 'abc bbc cbc dbc'
print(re.findall('[abc]bc', s))
# [^] : 中括号内元素的都不可以
s = 'abc bbc cbc dbc'
print(re.findall('[^abc]bc', s))
# | : 或
s = 'abc bbc cbc'
print(re.findall('abc|bbc', s))
# {2}:前面的一个字符有2个
s = 'abccabc abccc'
print(re.findall('abc{2}', s))
# {1,2}:前面的一个字符有1个或者2个
s = 'abccabc abccc'
print(re.findall('abc{1,2}', s))
贪婪匹配
# 贪婪匹配: 默认返回符合条件的最大长度的字符
# . 表示任意字符, * 表其前面的字符有0个或者无数个
s = 'abcdzeeeeeeeeeeeeeez'
res = re.findall('a.*z', s)
print(res) # ['abcdzeeeeeeeeeeeeeez']
# 非贪婪匹配: 返回符合条件的最小长度字符
# 使用问号 ? 即可进入非贪婪匹配
s = 'abcdzeeeeeeeeeeeeeez'
res = re.findall('a.*?z', s)
print(res) # ['abcdz']
match() 和 search()
match()函数 与 search()函数基本是一样的功能,不一样的就是match()匹配字符串开始位置的一个符合规则的字符串,search()是在字符串全局匹配第一个合规则的字符串
# match: 从字符串头部开始寻找, 找不到就报错
s = 'abc abcd abc'
res = re.match('abcd', s)
print(res.group()) # 报错
# search: 从字符串全局寻找
s = 'abc abcd abc'
res = re.search('abcd', s)
print(res.group()) # abcd
re.S
可以让.
匹配换行符\n
s = '''abc
abcabc*abc
'''
print(re.findall('abc.abc', s)) # ['abc*abc']
print(re.findall('abc.abc', s, re.S)) # ['abc\nabc', 'abc*abc']
分组和有名分组
# 分组: 只要括号里面的
s = 'abc abcd abcd'
print(re.findall('a(.)c(d)', s)) # [('b', 'd'), ('b', 'd')]
# 有名分组 ?P<>
s = 'abc abcd abcd'
print(re.search('a(?P<name1>.)c(?P<name2>d)', s).grounpdict()) # {'name1': 'b', 'name2': 'd'}
Python3 常用模块2的更多相关文章
- python3 常用模块详解
这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...
- python3 常用模块
一.time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们 ...
- Python3常用模块的安装
1.mysql驱动:mysql-connector-python 1.安装 $ pip3 install mysql-connector-python --allow-external mysql-c ...
- Python3 常用模块3
目录 numpy模块 创建numpy数组 numpy数组的属性和用法 matplotlib模块 条形图 直方图 折线图 散点图 + 直线图 pandas模块 numpy模块 numpy模块可以用来做数 ...
- Python3 常用模块1
目录 os模块 对文件夹操作 对文件进行操作 sys模块 json 和pickle模块 logging模块 日志等级 longging模块的四大组件 自定义配置 os模块 通过os模块我们可以与操作系 ...
- Python3基础(5)常用模块:time、datetime、random、os、sys、shutil、shelve、xml处理、ConfigParser、hashlib、re
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- Python3基础笔记--常用模块
目录: 参考博客:Python 之路 Day5 - 常用模块学习 Py西游攻关之模块 一.time模块 二.random模块 三.os模块 四.sys模块 五.hashlib模块 六.logging模 ...
- day--6_python常用模块
常用模块: time和datetime shutil模块 radom string shelve模块 xml处理 configparser处理 hashlib subprocess logging模块 ...
- python基础之常用模块以及格式化输出
模块简介 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
随机推荐
- 小白学 Python 爬虫(2):前置准备(一)基本类库的安装
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 本篇内容较长,各位同学可以先收藏后再看~~ 在开始讲爬虫之前,还是先把环境搞搞好,工欲善其事必先利其器嘛~~~ 本篇 ...
- CSS 技巧一则 -- 在 CSS 中使用三角函数绘制曲线图形及展示动画
最近一直在使用 css-doodle 实现一些 CSS 效果. css-doodle 是一个基于 Web-Component 的库.允许我们快速的创建基于 CSS Grid 布局的页面,以实现各种 C ...
- ArcGIS API For Javascript :双屏(多屏)地图联动的方法
在遇到地图对比的应用场景下,我们需要双屏地图或者多屏地图来满足我们的业务需求. 解决思路:首先生成两份(多份)地图,然后通过监听地图缩放拖拽,用地图四至将不同的地图对象做绑定,实现多地图联动. 前端部 ...
- Code Runner for VS Code 突破 1000 万下载量!支持运行超过 40 种语言
记得三年多前,韩老师那时还在写 PHP(是的,没错!在微软写 PHP),同时需要写 Python 和 Node.js .所以在那时,支持多种语言的 VS Code 已经是笔者的主力编辑器了.唯一不足的 ...
- Netflix 开源 Polynote:对标 Jupyter,一个笔记本运行多种语言
谈到数据科学领域的开发工具,Jupyter 无疑是非常知名的一种.它具有灵活高效的特点,非常适合进行开发.调试.分享和教学.近日,Netflix(奈飞)居然也玩起了跨界,他们开源了一个名为 Polyn ...
- Rust 入门 (二)
我认为学习计算机语言,应该先用后学,这一节,我们来实现一个猜数字的小游戏. 先简单介绍一个这个游戏的内容:游戏先生成一个1到100之间的任意一个数字,然后我们输入自己猜测的数字,游戏会告诉我们输入的数 ...
- 小程序取消IOS虚拟支付解决方案
前因 本来我们的小程序用的好好的,结果突然有一天,微信就把小程序的ios端的虚拟支付给关了...坑爹啊!搞的安卓端的可以支付,ios的支付不了.于是就在网上找解决办法. 一说通过app跳转支付,总不能 ...
- javaScript——label语句
第一次看见label语句是这样一个场景: function foo() {x: 1} 当时十分疑惑,为什么不报错呢?对象可以这样写? 后来知道这个是label语句,一般配合break和continue ...
- 探索 IPv6 网络
目录 0x00 前言 0x01 探索 服务器配置 IPv6 地址 服务器部署网络代理 客户端配置网络代理 测试访问 IPv6 地址 给博客添加 IPv6 地址 0x00 前言 IPv4 地址枯竭的事情 ...
- linux计算机网络基础
OSI7层协议和TCP/IP4层网络协议 第一层:物理层,定义各种物理设备的规范,如通信距离,接口大小等. 第二层:数据链路层,基于mac地址通信是,数据报文封装和相应方式. 第三层:网络层,基于IP ...