1、正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
正则表达式常用匹配规则:
.匹配任意字符,但是不能匹配换行符
\d匹配任意数字 [0-9]
\D匹配任意的非数字[^0-9]
\s匹配的是空白字符(包括:\n,\t,\r和空格)
\w匹配的是a-z和A-Z以及数字和下划线 [0-9a-zA-Z_]
\W匹配的是和\w相反的 [^0-9a-zA-Z_]
[]组合的方式,只要满足中括号中的某一项都算匹配成功
匹配多个字符
*:可以匹配0或者任意多个字符
import re
text="0123456"
ret=re.match('\d*',text)
print(ret.group())
运行结果:
0123456
+:可以匹配1个或者多个字符
text = "abc"
ret = re.match('\w+',text)
print(ret.group())
>> abc
?:匹配的字符可以出现一次或者不出现(0或者1)
text = "123"
ret = re.match('\d?',text)
print(ret.group())
>> 1
{m}:匹配m个字符
text = "123"
ret = re.match('\d{2}',text)
print(ret.group())
>> 12
{m,n}:匹配m-n个字符
text = "123"
ret = re.match('\d{1,2}',text)
prit(ret.group())
>> 12
^(脱字号):表示以...开始
import re
text = "sara"
ret = re.match('^s',text)
print(ret.group())
$:表示以...结束
import re
text = "xxx@qq.com"
ret = re.search('\w+@qq\.com$',text)
print(ret.group())
>>xxx@qq.com
|:匹配多个表达式或者字符串
Python中如何使用正则表达式
findall()方法
在整个字符串中匹配指定字符或者字符串,并且将所有满足条件的结果返回到一个列表
import re
ret=re.findall('a','sarahaha')
print(ret)
运行结果:
['a', 'a', 'a', 'a']
search()方法:
此方法是在整个字符串中查找满足匹配条件的字符或者字符串,一旦找到一个就不再继续查找,并返回包含查找值的对象,可以用.group()方法进行查看
import re
ret=re.search('a','sarahaha')
print(ret)
运行结果:
<re.Match object; span=(1, 2), match='a'>
match()方法:
此方法是用来从开头位置查找是否满足匹配条件,如果没有就会返回None,如果有,则会返回一个包含查找值的对象,可以用group()方法进行查看
import re
ret=re.match('a','sarahaha')
print(ret.group())
运行结果:
AttributeError: 'NoneType' object has no attribute 'group'
ret=re.match('s','sarahaha')
print(ret.group())
运行结果:
s
split()方法:
此方法用来对一个字符串进行切分
ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
2 print(ret) # ['', '', 'cd']
2.Python之os模块
在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块
**os.getcwd()模块函数 **功能:获取当前工作目录
import os
a = os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径
print(a)
运行结果:
E:\python
os.chdir()模块函数 功能:改变当前脚本工作目录;相当于shell下cd
import os
retval = os.getcwd() # 查看当前工作目录
print("当前工作目录为 %s" % retval)
os.chdir("D:") # 修改当前工作目录
retval = os.getcwd() # 查看修改后的工作目录
print("目录修改成功 %s" % retval)
运行结果:
当前工作目录为 E:\python
目录修改成功 D:\
os.curdir模块函数功能:返回当前目录: (’.’)
import os
a = os.curdir #返回当前目录: ('.')
print(a)
运行结果:
.
os.pardir模块函数 功能:获取当前目录的父目录字符串名
import os
a = os.pardir #获取当前目录的父目录字符串名:('..')
print(a)
运行结果:
..
os.makedirs()模块函数 功能:可创建多层递归目录
import os
os.makedirs("a/b/c")
os.removedirs()模块函数 功能:若目录为空,则删除,并递归到上一级目录,如若也为空,则删除
import os
os.removedirs("a/b/c")
os.mkdir()模块函数 功能:创建单级目录
import os
os.mkdir("dsr")
os.rmdir()模块函数 功能:删除单级空目录,若目录不为空则无法删除
import os
os.rmdir("dsr")
os.listdir()模块函数 功能: 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
import os
a = os.listdir("python") #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(a)
os.remove()模块函数 功能: 删除一个文件,对目录不起作用
os.rename()模块函数 功能: 重命名文件或目录
os.stat()模块函数【常用】 功能:获取文件或者目录信息
os.path.exists()模块函数【常用】 功能:如果文件存在,返回True;如果文件不存在,返回False
os.path.isabs()模块函数【常用】 功能:如果文件是绝对路径,返回True
os.path.isfile()模块函数【常用】 功能:如果文件是一个存在的文件,返回True。否则返回False
os.path.isdir()模块函数【常用】 功能:如果目录是一个存在的目录,则返回True。否则返回False
os.path.getatime()模块函数 功能:返回所指向的文件或者目录的最后存取时间戳
os.path.getmtime()模块函数 功能:返回所指向的文件或者目录的最后存取时间戳
3.datatime模块
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.
datetime模块定义了5个类,分别是
1.datetime.date:表示日期的类
2.datetime.datetime:表示日期时间的类
3.datetime.time:表示时间的类
4.datetime.timedelta:表示时间间隔,即两个时间点的间隔
5.datetime.tzinfo:时区的相关信息
date类定义了一些常用的类方法与类属性,方便我们操作:
date.max、date.min:date对象所能表示的最大、最小日期;
date.resolution:date对象表示日期的最小单位。这里是天。
date.today():返回一个表示当前本地日期的date对象;
date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;
date提供的实例方法和属性:
date.year、date.month、date.day:年、月、日;
date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属(原有对象仍保持不变)
date.timetuple():返回日期对应的time.struct_time对象;
date.toordinal():返回日期对应的Gregorian Calendar日期;
date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
date.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
date.isocalendar():返回格式如(year,month,day)的元组;
date.isoformat():返回格式如’YYYY-MM-DD’的字符串;
date.strftime(fmt):自定义格式化字符串。
time类定义的类属性:
time.min、time.max:time类所能表示的最小、最大时间。其中,time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);
time.resolution:时间的最小单位,这里是1微秒;
time类提供的实例方法和属性:
time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒;
time.tzinfo:时区信息;
time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]]):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
time.isoformat():返回型如"HH:MM:SS"格式的字符串表示;
time.strftime(fmt):返回自定义格式化字符串。在下面详细介绍;
datetime类
datetime类是date与time的结合体,包括date与time的所有信息。
datetime类定义的类属性与方法:
datetime.min、datetime.max:datetime所能表示的最小值与最大值;
datetime类提供的实例方法与属性:
datetime.year、month、day、hour、minute、second、microsecond、tzinfo:
datetime.date():获取date对象;
datetime.time():获取time对象;
datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]):
datetime.timetuple()
datetime.utctimetuple()
datetime.toordinal()
datetime.weekday()
datetime.isocalendar()
datetime.isoformat([sep])
datetime.ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
datetime.strftime(format)
4.http请求
Get方式
from urllib import parse,request
url='http://localhost/index.php?age=222&uname=111'
re=request.Request(url)
res=request.urlopen(re)
print(res.read())
Post方式
from urllib import parse,request
values={'uname':'111','age':'222'}
data=parse.urlencode(values)
url='http://localhost/index.php'
req=request.Request(url,data.encode(encoding='utf-8'))
res=request.urlopen(req)
print(res.read())
5.作业
请用户输入一个时间,输出选项所对应的现在时间,告诉用户这两个时间相隔的天数,小时数,分钟数和秒数。
import datetime
dt_today = datetime.datetime.today()
print(dt_today)
year=int(input('请输入年:'))
month=int(input('请输入月:'))
day=int(input('请输入日:'))
hour=int(input('请输入小时:'))
minute=int(input('请输入分:'))
second=int(input('请输入秒:'))
dt = datetime.datetime(year, month,day,hour,minute,second)
print('相隔的天数为:{}'.format(dt_today-dt))
请用户输入电话及邮箱,判断用户输入是否合法。
import re
tel=input("请输入您的电话:")
num=re.match(r'^1[3,4,5,6,7,8]\d{9}$',tel)
if num:
print("输入的电话合法")
else:
print("输入电话号码不合法")
email=input("请输入邮箱:")
r=re.compile(r'^[a-zA-Z0-9_][a-zA-Z0-\_\-\.]+@[a-zA-Z0-9]+\.[com,cn,net]{1,3}$')
if r.match(email):
print("输入的邮箱合法")
else:
print("输入的邮箱不合法")
对http://www.baidu.com 进行请求,并用正则化匹配图片内容。将百度图标爬取下来保存至本地
。。。