Python入门-Day5

正则表达式

正则表达式是可以匹配文本片段的模式,它能帮助你方便的检查一个字符串是否与某种模式匹配。最简单的正则表达式就是普通字符串,可以匹配其自身。

re模块
re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
参考资料:正则表达式符号字符大全

参数描述
pattern匹配的正则表达式
string要匹配的字符串
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
import re
line='abc123deg'
match1=re.match(r'\w+',line)
print(match1)
#输出结果
<re.Match object; span=(0, 9), match='abc123deg'>

import re
line='abc123deg'
match1=re.match(r'\d+',line)#起始位置不是数字,匹配不成功
print(match1)
#输出结果
None

匹配成功re.match方法返回一个匹配的对象,否则返回None
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式,在Match对象上用group()方法提取出子串来

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
import re
line='abc def ghi'
match1=re.match(r'(\w+) (\w+) (\w+)',line)
print(match1.group())
print(match1.group(1))
print(match1.group(2))
print(match1.group(3))
#输出结果
abc def ghi
abc
def
ghi
re.search方法

扫描整个字符串并返回第一个成功的匹配。
函数语法:
search(string[, pos[, endpos]])
(其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。)

import re
line='abc123deg'
match1=re.search(r'\d+',line)
print(match1)
#输出结果
<re.Match object; span=(3, 6), match='123'>

#对比
import re
line='abc123deg'
match1=re.match(r'\d+',line)#起始位置不是数字,匹配不成功
print(match1)
#输出结果
None

re.match与re.search的区别:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
findall 方法
上面的 match 和 search 方法都是一次匹配,只要找到了一个匹配的结果就返回。然而,在大多数时候,我们需要搜索整个字符串,获得所有匹配的结果。

findall 方法

需要搜索整个字符串,获得所有匹配的结果。
函数语法:
findall(string[, pos[, endpos]])

finditer 方法

finditer 方法的行为跟 findall 的行为类似,也是搜索整个字符串,获得所有匹配的结果。但它返回一个顺序访问每一个匹配结果(Match 对象)的迭代器。

re.compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

语法格式为:
re.compile(pattern[, flags])
参数:
pattern : 一个字符串形式的正则表达式
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

  1. re.I 忽略大小写
  2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
  3. re.M 多行模式
  4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
  5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
  6. re.X 为了增加可读性,忽略空格和 # 后面的注释
os模块

参考资料:
Python3 OS 文件/目录方法
官方文档

datetime模块

datetime模块提供了操作日期和时间功能, 该模块提供了五种核心对象:datetime(时间日期类型), date(日期类型), time(时间类型), tzinfo(时区类型), timedelta(时间差类型)。
参考资料:Python中的datetime模块的使用

import datetime
now=datetime.datetime.today()
print(now)
now1=datetime.datetime.now()
print(now1)
now2=datetime.date.today()
print(now2)
#输出结果
2019-01-30 22:56:02.645318
2019-01-30 22:56:02.645318
2019-01-30
作业

请用户输入一个时间,输出选项所对应的现在时间,告诉用户这两个时间相隔的天数,小时数,分钟数和秒数。
请用户输入电话及邮箱,判断用户输入是否合法。
对http://www.baidu.com 进行请求,并用正则化匹配图片内容。将百度图标爬取下来保存至本地

#计算时间差距
import datetime
today=datetime.datetime.now()
a=input('请你输入时间(格式为2000-00-00 00:00:00.00):')
b=datetime.datetime.strptime(a,"%Y-%m-%d %H:%M:%S.%f")
diff=today-b
print('现在时间',today)
print('现在离输入的时间相差',diff)
#输出结果
请你输入时间(格式为2000-00-00 00:00:00.00):2000-02-22 22:22:22.22
现在时间 2019-01-30 22:19:49.593738
现在离输入的时间相差 6916 days, 23:57:27.373738
#判断用户输入邮箱是否合法
import re
a=input('请你输入邮箱:(格式: 12345678@qq.com):')
if re.match(r"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",a):
    print('你输入的邮箱正确')
else:
    print('你输入的邮箱有误')
#判断用户输入电话是否合法
import re
b=input('请输入你的电话:')
if re.match(r'^1[3,4,5,7,8]\d{9}$',b):
    print('你输入的电话正确')
else:
    print('你输入的有误')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值