昨日内容回顾

  1. 基本数据类型
  2. 编码
  3. 流程控制
  4. 文件操作
  5. 函数-内置函数
  6. 装饰器

常用模块:

  1. 序列化模块
  2. 随机数模块
  3. os模块
  4. sys模块
  5. 时间模块
  6. hashlib
  7. collections
  8. re 1天半
  9. logging 日志
  10. 自定义模块 1天
  11. 模块和包
  12. 异常处理

学习时间

面向对象 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'])

双端队列 和 列表的区别

  1. 效率 底层的数据结构上
  2. 双端队列 从中间插入或者删除比较频繁的时候
  3. 如果只是单纯的append和pop再加上查询比较多 这个时候就用列表

正则表达式

  1. 场景一 :检测某一段字符串是否符合规则
  2. 从某一段文字中找到符合规则的内容

规则-待检测一段字符串

元字符

元字符 含义
. 匹配换行符之外的所有字符
[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之外的都匹配

注意事项:

  1. [9-0] 不能从大到小来规定范围
  2. 字符组内所有的范围都是根据ascii码来的
  3. 在字符组当中 -是有特殊意义的,如果我们想取消这个横杠的特殊意义需要使用\作为转义符

开始符和结束符

元字符 含义
^ 永远在一个规则的最开始
$ 永远在一个规则的最末尾
^和$ 规定了这个字符串的长度,并且在这个长度内的内容
| 或的概念123|456

分组的概念

www\.(baidu|oldboy)\.com

总结

\d \w \s \n \t \D \W \S \b
[],[^]
^ $
|   或 永远把相对长的规则放在左侧
()
.

量词

在量词的范围内尽可能多的匹配

  1. {n} 表示出现n次
  2. {n,} 表示至少出现n次
  3. {n,m} 表示出现n-m次
  4. ? 表示匹配0次或1次
  5. + 表示匹配1次或多次
  6. * 表示匹配0次或多次

元字符 量词

  1. 匹配的是一个字符的内容
  2. 量词 表示的是匹配的次数
#匹配整数
[1-9]\d*|0
#匹配小数
\d+\.\d+
#匹配一个整数或者小数
\d+\.\d+|([1-9]\d*|0)
\d+\.?\d*
\d+(\.\d+)?

在量词范围内尽可能多的匹配 - 贪婪匹配

正则表达式 匹配身份证号码

15位

  1. 15位
  2. 首位不能为0
  3. ^[1-9]\d{14}$

18位

  1. 18位
  2. 首位不能为0,末尾可能是x和数字
  3. ^[1-9]\d{16}[\dx]$

合起来

  1. ^([1-9]\d{16}[\dx]|[1-9]\d{14})$
  2. [1-9]\d{14}(\d{2}[\dx])?

转义

  1. 在测试的网页上写的是什么
  2. 就直接复制过来
  3. 然后在字符串外面加上一个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. 这个文件夹里都是文件
    2. 这个文件夹里还有文件夹
  • 计算当前月的1号的时间戳时间

2019-03-21-day016-正则表达式的更多相关文章

  1. [2019.03.21]LF, CR, CRLF and LFCR(?)

    开玩笑的啦,没有LFCR这种沙雕东西 为什么突然想起来写这个呢,是因为先前照着shell画llehs的时候,总报错,改正了以后又因为看不见而在上一篇博客上没有写明,所以过来好好写一写咯. 可以看出报错 ...

  2. 2019.03.21 admin

    1.新建文件创建一个应用类 stu Python manage.py startapp stu 2,创建应用类 记得在setting中的installed_apps中添加应用 student/mode ...

  3. 2019.03.21 读书笔记 ==与Equals

    首先得出一个结论:==是比较变量内存的数据,Equals是值比较.但是他们都能被重写,所以object又增加了一个RefrenceEquals不可被重写,只比较数据: [ReliabilityCont ...

  4. 2019.03.21 读书笔记 枚举ENUM

    其实没必要为枚举显式赋值,如果赋值了,就一定要全部赋值,否则默认在上一个元素的基础上+1,如果不给枚举变量赋值,就算枚举中没有0元素,也会显示为0,而超出枚举范围的整型数据,也会显示值本身,而不是异常 ...

  5. 2019.03.21 读书笔记 readonly与const

    区别: const是编译时常量(指反编译时看到的源码是常量本身,而不是变量),自带static,只能修饰基元类型.枚举.字符串,readonly是运行时常量(全局变量或者构造赋值),不受类型限制,但在 ...

  6. 2019.03.21 读书笔记 基元类型的Parse与TryParse 性能与建议

    Parse转换失败时会抛出异常,耗损性能,如果转换成功,则与TryParse无差异.查看源码,tryparse的代码更多一些,在失败时,反而性能更优,主要是抛出异常耗损了性能.所以在不确定是用Tryp ...

  7. [2019.03.25]Linux中的查找

    TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...

  8. http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html

    http://www.cnblogs.com/wzh206/archive/2010/03/21/1691112.html

  9. 2019.03.03 - Linux搭建go语言交叉环境

    编译GO 1.6版本以上的需要依赖GO 1.4版本的二进制,并且需要把GOROOT_BOOTSTRAP的路径设置为1.4版本GO的根目录,这样它的bin目录就可以直接使用到1.4版本的GO 搭建go语 ...

  10. 2019.3.18考试&2019.3.19考试&2019.3.21考试

    2019.3.18 C O D E T1 树上直接贪心,环上for一遍贪心 哇说的简单,码了将近一下午终于码出来了 感觉自己码力/写题策略太糟糕了,先是搞了一个细节太多的写法最后不得不弃疗了,然后第二 ...

随机推荐

  1. CentOS7 搭建LVS+keepalived负载均衡

    1.实验环境 4台节点 Keepalived1 + lvs1(Director1):192.168.31.4 Keepalived2 + lvs2(Director2):192.168.31.3 Re ...

  2. ansible管理windows (发送文件)

    https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 环境: 服务 ...

  3. Rest Client插件简单介绍

    一.这插件是做什么的? 快速测试服务的. 和mockmvc功能差不多,可视化操作更直观一点. 如果使用mockmvc漏掉了一个返回值的验证,可能还需要修改再次启动 使用插件的优点是 1.如果服务端没问 ...

  4. Spring ApplicationListener使用方法及问题

    使用场景 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.这个时候我们就可以使用Spring提供的ApplicationListener来 ...

  5. 九校模拟——餐馆(restaurant)

    1 餐馆(restaurant) 1.1 题目背景 铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加. 1.2 题目描述 共有n 种食材,一份食材i 需要花ti 小时不间断地进行播种,施肥 ...

  6. rtp rtcp rtsp sip协议了解方法

    vlc有个串流功能 可以流各种推流 方便拉取. 能够方便抓包查看协议. 1.菜单媒体->流 打开对话框 分别可以选择本地文件 关盘文件 网络流 捕获设备做流化处理. 2. 选择 串流->新 ...

  7. Guidelines for Writing a Good NIPS Paper

    By the NIPS 2006 Program Committee With input from Andrew Ng, Peter Dayan, Daphne Koller, Sebastian ...

  8. 基础数据类型的坑和集合及深浅copy

    一.基础数据类型的坑: 元组: 如果一个元组中,只有一个元素,且没有逗号,则该"元组"与里面的数据的类型相同. # 只有一个数据,且没有逗号的情况: print(tu1,type( ...

  9. MyEclipse常用设置和快捷键

    Java快捷键 1.注释快捷键 先敲/  再敲两个**     Enter 回车 2.system.out.println(); 常用设置 [子类继承父类] [编码字体设置] 删除当前行:ctrl+d ...

  10. Win10系列:VC++媒体播放控制1

    在MediaElement控件中定义了用于控制视频播放的函数,如Play.Pause和Stop等函数.本小节将在20.6.1小节所新建的项目基础上继续来介绍如何为视频添加播放控制,并在最后一部分给出项 ...