Python基础5

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 进行请求,并用正则化匹配图片内容。将百度图标爬取下来保存至本地

。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值