上节回顾:
正则
新知识:
1、finall的优先级查询
()优先 v ?:取消括号的定义 ?P<web_name> 正则的分组命名
import reret=re.findall("www.(baidu|oldboy).com","www.oldboy.com")print(ret) #['oldboy'] ret1=re.findall("www.(?:baidu|oldboy).com","www.oldboy.com")print(ret1)# ['www.oldboy.com']#findall会优先把匹配结果阻力内容返回,如果想要匹配结果取消权限即可
import reret=re.findall(r"www.baidu.com|www.oldboy.com",r"www.oldboy.com")ret1=re.findall(r"www.(baidu|oldboy).com",r"www.oldboy.com") #findall取组内ret2=re.findall("www.(?:baidu|oldboy).com","www.oldboy.com") #findall取组内所有匹配print(ret)print(ret1)print(ret2)# ['www.oldboy.com']# ['oldboy']# ['www.oldboy.com']ret3=re.search(r"www\.(?Pbaidu|oldboy)\.com",r"www.oldboy.com").group("web_name")ret4=re.search(r"www\.(?P baidu|oldboy)\.com",r"www.oldboy.com").group()print(ret3) #search取组内print(ret4) #search取组内所有匹配# oldboy# www.oldboy.com
2、split的优先级查询
import reret=re.split("\d+","ev3qw213safsa4yuan")print(ret)# ['ev', 'qw', 'safsa', 'yuan']ret1=re.split("(\d+)","ev3qw213safsa4yuan")print(ret1)# ['ev', '3', 'qw', '213', 'safsa', '4', 'yuan']# 在匹配部分加上()之后所切出的结果是不同的# 没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项# 这个在某些需要保留匹配部分的使用过程非常重要
3、分组的命名和组的引用
第一种方法:分组命名然后引用
第二种方法直接引用:(比较抽象,不常用)
(如果不给组起名字,也可以用\序号来找到对应的组,表示要找到的内容和前面的组内容一致
获取的匹配结果也可以用group(序号)拿到对应的值
import reret=re.search(r"<(\w+)>\w+ ","hello
")print(ret.group()) #hello
print(ret.group(1)) #h1
例子 :爬虫的例子
模块:时间模块
1、和时间有关系的我们就要用到时间模块,在使用模块之前,首先要导入这个模块
(1)time.sleep(secs)
(线程)推迟指定的运行时间,单位为秒
(2)time.time()
获取当前时间戳
2、表示时间的三种方式
在python中,通常有这三种方式表示时间:时间戳(timestamp)、元组(struct_time)、格式化的时间字符串(Format String);
(1)时间戳:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,我们运行“type(time.time())”返回的是float类型
(2)格式化的时间字符串:1999_12_06
%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%I 12小时制小时数(01-12)%M 分钟数(00=59)%S 秒(00-59)%a 本地简化星期名称%A 本地完整星期名称%b 本地简化的月份名称%B 本地完整的月份名称%c 本地相应的日期表示和时间表示%j 年内的一天(001-366)%p 本地A.M.或P.M.的等价符%U 一年中的星期数(00-53)星期天为星期的开始%w 星期(0-6),星期天为星期的开始%W 一年中的星期数(00-53)星期一为星期的开始%x 本地相应的日期表示%X 本地相应的时间表示%Z 当前时区的名称%% %号本身
3、例子:首先我们导入time模块,来认识一下python中表示时间的几种格式
(1)计算机唯一表示一个时间点的时间
import timel_time=time.localtime()time.struct_time(tm_year=2017, tm_mon=12, tm_mday=13, tm_hour=9, tm_min=33, tm_sec=17, tm_wday=2, tm_yday=347, tm_isdst=0)print(l_time)
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组是用来操作时间的
2、本地时间和伦敦时间(相差八个小时)
import timeprint(time.localtime()) #本地时间print(time.gmtime()) #伦敦时间
3、时间格式之间的相互转换
(1)格式化时间转成时间戳
import timeprint(time.strptime("2017-12-13","%Y-%m-%d"))# time.struct_time(tm_year=2017, tm_mon=12, tm_mday=13, tm_hour=0, # tm_min=0, tm_sec=0, tm_wday=2, tm_yday=347, tm_isdst=-1)print(time.mktime(time.strptime("2017-12-13","%Y-%m-%d")))# 1513094400.0
(2)时间戳转换成结构化时间
import timeprint(time.localtime(1500000000)) #本地时间# time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, # tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)print(time.gmtime(1500000000)) #转成伦敦时间# time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, # tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
结构化时间转成时间戳
import timetime_tuple=time.localtime(1500000000)print(time.mktime(time_tuple))# 1500000000.0
(3)结构化时间转成格式化时间(字符串格式)
import timeprint(time.strftime("%X"))# 10:19:34print(time.strftime("%Y-%m-%d",time.localtime(1500000000)))# 2017-07-14
格式化转换成结构化时间
import timeprint(time.strptime("2017-08-09","%Y-%m-%d"))# time.struct_time(tm_year=2017, tm_mon=8, tm_mday=9, tm_hour=0, # tm_min=0, tm_sec=0, tm_wday=2, tm_yday=221, tm_isdst=-1)
4、不常用
import timeprint(time.asctime())# Wed Dec 13 10:26:56 2017print(time.asctime(time.localtime(1000000000)))# Sun Sep 9 09:46:40 2001 #结构化时间print(time.ctime(1000000000))# Sun Sep 9 09:46:40 2001 #时间戳时间
import timetrue_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))dif_time=time_now-true_timestruct_time=time.gmtime(dif_time)print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1, struct_time.tm_mday-1,struct_time.tm_hour, struct_time.tm_min,struct_time.tm_sec))# 过去了0年0月1天2小时30分钟0秒
模块:sys模块
1、sys模块是与python解释器交互的一个接口
# sys.argv 命令行参数List,第一个元素是程序本身路径#sys.exit 退出程序,正常退出时exit(0),错误退出sys.exit(1)#sys,version 获取Python解释程序的版本信息#sys.path 返回模块的搜索路径,初始化时使用pythonpath环境变量的值#sys.platform 返回操作系统平台名称
对上面的分析
print(sys.platform) #win32print(sys.version)# 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]sys.exit(0)sys.exit(1)print("nihao") #空白已经退出print(sys.path)#模块导入的时候从这个列表中的路径依次去寻找模块,找到就停止# sys.path 的第一个元素是当前被执行的python文件所在的地址# 之后的地址依次是python内部的事
2、argv 执行脚本的时候使用
sys.argv的第一个值是固定的,是这个文件的名字
之后的参数是在控制台执行py文件的时候传入的参数。(python 文件名字 传入的参数)
我们可以用这写参数来直接完成一些校验类的工作
import sysprint(sys.argv)args_lst=sys.argvif len(args_lst)==3 and args_lst[1]=="alex" and args_lst[2]=="3714": print("执行程序了")else: sys.exit()
3、collections模块
链接:http://www.cnblogs.com/Eva-J/articles/7228075.html#_label15