正则补充以及时间,sys 模块 (collection模块后期补充)

# 正则表达的补充:分组优先
# 分组优先:优先显示括号内部的内容
# 取消分组优先:组内的前面写上 ? :就取消了分组优先在函数findall中体现
import re
# ret = re.findall(r'www\.baidu\.com|www\.oldboy\.com',r'www.baidu.com')
# ret = re.findall(r'www\.(baidu|oldboy)\.com',r'www.baidu.com') #findall取组内
# ret = re.findall(r'www\.(?:baidu|oldboy)\.com',r'www.baidu.com') #findall取组所有匹配的
# print(ret)
# 第二行打印结果为 ['baidu'] 因为在findall中分组优先,
# 第三行打印结果为 ['www.baidu.com'] 因为取消了分组优先拿到了全部
#取消命名优先的规则是在(?:)j就取消了它这个组的优先

# 正则的分组命名:如下 ?P<自己起名字>
# ret = re.search(r'www\.(?P<web_name>baidu|oldboy)\.com', r'www.baidu.com') .group("web_name")
# 结果是 baidu (这是search取组内,但是前提要给这个组命名一个名字)
# ret = re.search(r'www\.(?P<web_name>baidu|oldboy)\.com', r'www.baidu.com') .group()
# 结果是 www.baidu.com(search取全部)
# print(ret)

# ret=re.split("\d+","eva3egon4yuan")
# print(ret) #结果 : ['eva', 'egon', 'yuan'] 没有分组切割的就会没有
#
# ret=re.split("(\d+)","eva3egon4yuan") #带上分组会留下切割的的东西
# print(ret) #结果 : ['eva', '3', 'egon', '4', 'yuan']
#
# ret = re.search("<\w+>\w+</\w+>","<h1>hello</h1>")
# ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>")
# # 上面引用了前面的正则表达式,所以有了下面的结果(前后的值必须是相同的h1=h1)
# print(ret.group('tag_name')) #结果 :h1
# print(ret.group()) #结果 :<h1>hello</h1>
# 上面的就是分组的命名和分组的引用


# ret = re.search(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
# print(ret.group(1)) # 上面的/1就是引用前面的组(不起名字直接用)
# # 如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
# # 获取的匹配结果可以直接用group(序号)拿到对应的值
# print(ret.group()) #结果 :<h1>hello</h1>
# ret = re.findall(r"<(\w+)>\w+</\1>","<h1>hello</h1>")
# print(ret)

# 匹配整数
# ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
# print(ret) #['1', '2', '60', '40', '35', '5', '4', '3']结果匹配了小数
#由于上述结果所以考虑去掉小数中的40 35
# 思路先匹配小数 \d+\.\d+ 可以匹配到小数40.35
# ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
# print(ret)
# # ret.remove('')
# print(ret)


# 模块
# import time
# 第一种时间模式
#print(time.time()) #时间戳:记录了从1970.1.1到现在的所有秒(主要是计算机用)
# time.sleep(1) 时间戳返回的是float类型(浮点数)

# 第二种时间模式(给人看的)
# ret = time.strftime('%Y-%m-%d %a %H:%M:%S') #string format time
# print(ret) 这个是格式化的时间字符串

# 第三种时间模式元祖时间模式(struct)(用来计算的)
#时间元组:localtime将一个时间戳转换为当前时区的struct_time
# time.localtime()
# time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,
#           tm_hour=13, tm_min=59, tm_sec=37,
# tm_wday=0, tm_yday=205, tm_isdst=0)

# ret=time.strftime("%Y-%m-%d %a %H:%M:%S")
# print(ret)
#
# print(time.localtime())#本地时间
# print(time.gmtime()) #查看伦敦时间
# 从时间戳转换成其他时间示例
# ret=time.localtime(1000000000) #由时间戳转其他时间格式用time.localtime
# print(ret)
# # 结构化时间转化时间戳示例
# # print(time.mktime(ret))#这里ret引用了上题中的,由时间字符串转化成了时间戳形式1000000000
# ret2=time.strftime('%Y-%m-%d %a %H:%M:%S',ret)
# print(ret2)

# 综合上诉总结为 将时间戳的时间通过 time.localtime(1000000)变成格式化时间,
# 格式化时间再通过 time.strftime()操作变成想要的 2001-09-09 Sun 09:46:40模式

# 现在已知时间 1990-3-31,需求将其转化为时间戳形式
# ret=time.strptime('1990-3-31','%Y-%m-%d')
# print(ret) #此刻变成已经变成结构化
# ret2=time.mktime(ret
# print(ret2) #此刻ret2 已经变成了时间戳了

# time.asctime() #括号里可以接收结构化时间
# print(time.asctime(time.localtime(100000000)))#结果是Sat Mar 3 17:46:40 1973

# 把时间戳转化成 Sat Mar 3 17:46:40 1973 可以用一下方法
# print(time.ctime(100000000)) #结果就变成了Sat Mar 3 17:46:40 1973

# 题目计算时间差
# start_time=150000000
# now=time.time()
# print(now-start_time)
# struct_time=time.gmtime(now-start_time)
# print(struct_time.tm_year-1970)
# print(struct_time.tm_mon-1)
# print(struct_time.tm_mday-1)


# 复习时候记得看(自己练习的时间转化例子)
# import time
# 以下是由 格式化时间到时间戳时间的演练 2017-09-11 08:30:00
# ret=time.strptime('2017_09_11 08:30:00','%Y_%m_%d %H:%M:%S')
# print(ret)
# ret2=time.mktime(ret)
# print(ret2)
# 时间戳转化成当地时间或者伦敦时间(字符串时间模式)
# ret3=time.localtime(15000000)#转化成当地时间
# print(ret3)
# ret=time.gmtime(120000000)#转化成伦敦时间
# print(ret)
# 以下是有时间戳转变成格式化时间的示例 时间戳为150000000
# ret=time.gmtime(150000000)
# print(ret)
# ret1=time.strftime('%Y-%m-%d %H:%M:%S',ret)
# print(ret1)

# import sys#sys是和python解释器交互的
# print(sys.platform)#查看自己电脑在什么操作平台
#
# print(sys.version) #显示python的版本 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)]
#
# print(sys.exit())#显示退出python程序
#可以设置参数exit(0) 正常退出显示0,错误退出显示1 自己可以设置

# print(sys.path) #结果显示当前的路劲及python包 模块
#就是模块导入的时候从这个列表中的路径依次去寻找模块,找到了就停止
#sys.path的第一位元素是当前被执行的python文件所在的地址
#之后的得知依次是python内部的库

# print(sys.argv)#当前文件所在地址
#第一个值是固定的,就是这个文件的名字,
#之后的参数,是在控制台执行py文件的时候传入的参数
#可以用这些参数进行校验的工作

# python 6sys.py
#python 6sys.py alex 3714
# args_lst = sys.argv #['6sys.py', 'alex', '3714']
# if len(args_lst) ==3 and args_lst[1] == 'alex' and args_lst[2] == '3714':
# print('执行程序了')
# else:
# sys.exit()
posted @ 2017-11-15 23:30  警察学院  阅读(103)  评论(0)    收藏  举报