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值

特点:

  1. 只要传入内容一样, 得到的hash值就一样
  2. 不能由hash值反解成内容
  3. 只要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的更多相关文章

  1. python3 常用模块详解

    这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...

  2. python3 常用模块

    一.time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们 ...

  3. Python3常用模块的安装

    1.mysql驱动:mysql-connector-python 1.安装 $ pip3 install mysql-connector-python --allow-external mysql-c ...

  4. Python3 常用模块3

    目录 numpy模块 创建numpy数组 numpy数组的属性和用法 matplotlib模块 条形图 直方图 折线图 散点图 + 直线图 pandas模块 numpy模块 numpy模块可以用来做数 ...

  5. Python3 常用模块1

    目录 os模块 对文件夹操作 对文件进行操作 sys模块 json 和pickle模块 logging模块 日志等级 longging模块的四大组件 自定义配置 os模块 通过os模块我们可以与操作系 ...

  6. Python3基础(5)常用模块:time、datetime、random、os、sys、shutil、shelve、xml处理、ConfigParser、hashlib、re

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  7. Python3基础笔记--常用模块

    目录: 参考博客:Python 之路 Day5 - 常用模块学习 Py西游攻关之模块 一.time模块 二.random模块 三.os模块 四.sys模块 五.hashlib模块 六.logging模 ...

  8. day--6_python常用模块

    常用模块: time和datetime shutil模块 radom string shelve模块 xml处理 configparser处理 hashlib subprocess logging模块 ...

  9. python基础之常用模块以及格式化输出

    模块简介 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

随机推荐

  1. [LC] 108题 将有序数组转换为二叉搜索树 (建树)

    ①题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,- ...

  2. [ch01-03]神经网络基本原理

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 前言 For things I don't know h ...

  3. 微擎使用post提交,并显示弹出层

    微擎使用post提交,并显示弹出层 function changeStatus(id, status) { // 提交数据 var id = parseInt(id); var status = pa ...

  4. 关键路径法(Critical Path Method, CPM)

    1.活动节点描述及计算公式 通过分析项目过程中哪个活动序列进度安排的总时差最少来预测项目工期的网络分析. 产生目的:为了解决,在庞大而复杂的项目中,如何合理而有效地组织人力.物力和财力,使之在有限资源 ...

  5. Docker从入门到实践(2)

    二.基本概念 Docker 镜像 我们都知道,操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相 ...

  6. 领扣(LeetCode)二叉树的中序遍历 个人题解

    给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归的思路很简单,不再累 ...

  7. MySQL 1364 错误提示:#1364 - Field "details" doesn't have a default value

    原因:mysql字段设计的时候为not null,结果此字段没有插入值,解决方法: 运行以下命令. SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO ...

  8. Vue packages version mismatch版本问题的解决

    今天下载了一个vue项目,npm run dev 时发现报错,错误信息入下: error in .src/components/mobile/SeniorDetail.vue Module build ...

  9. DDCTF2019 的四道题wp

    MIsc:流量分析 这道题,在比赛的时候就差个key了,但是没想到要改高度,后来群里师傅说了下,就再试试, 导出来改高度. 导出来,把 把%5c(4)前面的hex删掉,改成png,就直接拿去那个img ...

  10. 小白学习python第一天,Pycharm破解与用法(持续更新)

    目录 Pycharm安装与破解及汉化 Pycharm安装 Pycharm破解 Pycharm汉化 Pycharm使用 添加作者.时间等信息 补充 @ Pycharm安装与破解及汉化 本人最近开始找到了 ...