昨日内容回顾
- 基本数据类型
- 编码
- 流程控制
- 文件操作
- 函数-内置函数
- 装饰器
常用模块:
- 序列化模块
- 随机数模块
- os模块
- sys模块
- 时间模块
- hashlib
- collections
- re 1天半
- logging 日志
- 自定义模块 1天
- 模块和包
- 异常处理
学习时间
面向对象 6天
网络编程 5天
并发编程 5天
数据库 5天
前端
django 基础
框架
内容回顾
常用模块
时间模块
time
time是datetime的底层模块
时间戳时间-localtime/gmtime-> 结构化时间 -strftime-> 格式化时间
时间戳时间<-mktime- 结构化时间 <-
strptime- 格式化时间
datetime
时间对象
计算时间差\时间的时分秒
import datetime
t = datetime.datetime.now() # 时间操作符
print(t.date())
print(t.time())
print(t.timestamp())
print(t.day)
print(t.month)
collections
# 可命名元组 namedtuple
# 双端队列 deque
# 默认字典 defaultdict
from collections import Iterable,Iterator
print(isinstance(open('a','w'),Iterable))
print(isinstance(open('a','w'),Iterator))
from collections import defaultdict
def func():
return 5
dic = defaultdict(func)
print(dic['a'])
双端队列 和 列表的区别
- 效率 底层的数据结构上
- 双端队列 从中间插入或者删除比较频繁的时候
- 如果只是单纯的append和pop再加上查询比较多 这个时候就用列表
正则表达式
- 场景一 :检测某一段字符串是否符合规则
- 从某一段文字中找到符合规则的内容
规则-待检测一段字符串
元字符
元字符 | 含义 |
---|---|
. | 匹配换行符之外的所有字符 |
[0-9] \d | 匹配任意一个数字 digit |
\w | [A-Z0-9a-z_] |
\n | 匹配回车换行 |
\t | 匹配制表符 table |
空格 | 本身匹配 空格 |
\s | 匹配所有的空白 |
\b | 匹配一个单词的边界 |
\W | 除了数字字母下划线之外的所有 |
\D | 除了数字之外的所有 |
\S | 除了空白之外的所有 |
[] | 述的是一个字符位置上的内容规则 |
[0-5] | [012345] |
字母 | [A-Z0-9a-z] |
数字 | [0-9] |
小写 | [a-z] |
大写 | [A-Z] |
大小写 | [A-Za-z] |
数字和大小写字母加下划线 | [A-Z0-9a-z_] |
\\ | \ |
匹配所有 | [\D\d] [\W\w] [\S\s] |
非字符组 | [123]除了123之外的都匹配 |
注意事项:
- [9-0] 不能从大到小来规定范围
- 字符组内所有的范围都是根据ascii码来的
- 在字符组当中 -是有特殊意义的,如果我们想取消这个横杠的特殊意义需要使用\作为转义符
开始符和结束符
元字符 | 含义 |
---|---|
^ | 永远在一个规则的最开始 |
$ | 永远在一个规则的最末尾 |
^和$ | 规定了这个字符串的长度,并且在这个长度内的内容 |
| | 或的概念123|456
|
分组的概念
www\.(baidu|oldboy)\.com
总结
\d \w \s \n \t \D \W \S \b
[],[^]
^ $
| 或 永远把相对长的规则放在左侧
()
.
量词
在量词的范围内尽可能多的匹配
- {n} 表示出现n次
- {n,} 表示至少出现n次
- {n,m} 表示出现n-m次
- ? 表示匹配0次或1次
- + 表示匹配1次或多次
- * 表示匹配0次或多次
元字符 量词
- 匹配的是一个字符的内容
- 量词 表示的是匹配的次数
#匹配整数
[1-9]\d*|0
#匹配小数
\d+\.\d+
#匹配一个整数或者小数
\d+\.\d+|([1-9]\d*|0)
\d+\.?\d*
\d+(\.\d+)?
在量词范围内尽可能多的匹配 - 贪婪匹配
正则表达式 匹配身份证号码
15位
- 15位
- 首位不能为0
- ^[1-9]\d{14}$
18位
- 18位
- 首位不能为0,末尾可能是x和数字
- ^[1-9]\d{16}[\dx]$
合起来
- ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
- [1-9]\d{14}(\d{2}[\dx])?
转义
- 在测试的网页上写的是什么
- 就直接复制过来
- 然后在字符串外面加上一个r
r'\\n' --> r'\n'
t 't'
元字符 | 含义 |
---|---|
\t | \本身具有转义作用,相当于改变了t本来的面目 |
\ | \本身具有转义作用,\相当于转义了\的特殊作用,相当于普通的一个'\' |
贪婪匹配 :默认的 尽可能多匹配
惰性匹配 :需要我们手动设置的 尽可能少匹配
- a.* 以a开头的任意一个字符串都可以被匹配出来
- a.*? 非贪婪
- a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止
总结
正则表达式本身和 python没有半毛钱关系
正则表达式 :
- 检测字符串是否符合规则
- 从一大段文字中找到符合规则的
元字符
- 包括的
量词
- 包括的
转义符
- \n 换行
- \n \n
- r'\n' r'\n'
惰性特点 元字符量词?x
贪婪匹配 元字符量词
作业
- hashlib模块 写函数 校验两个文件是否内容相同如果这两个文件很大
- hashlib做一个密文存储密码的注册 登录程序
- 拼手气发红包 函数
- os模块 计算文件夹的总大小
- 这个文件夹里都是文件
- 这个文件夹里还有文件夹
- 计算当前月的1号的时间戳时间