python中re time os sys模块
这里写反斜杠也是转义的意思,python在re模块中使用都需要加反斜杠
\d 是匹配一个数字\+ 大于等于1\w 匹配数字字母下划线和中横杠\* 匹配0个或多个\t 指标符. 除了回车意外的的所有* 大于等于0+ 大于等于1? 0或1{m},{m,n} 出现m次,出现m到n次,包括mnre匹字符串re.match()re.match(pattern, string, flags)默认有3个参数,是最后一个我们不是很关注他,就默认。
通过你前面写的pattern(正则表达式的意思),匹配后面的string(字符串),他只能在你给的字符串的起始位置查找,注意和search的区别。
还有根据实践的结果,如果匹配失败返回nonere.search()
他和match有相同的作用,但是有区别。他会在整个字符串内容中匹配,直到找到第一个相匹配的字符串。
re.findall()他和match和search差不多,但是他是找出字符串中所有的
import reresult1 = re.match('\d+','dshfjasdsf23432dhfhsjdjfhjsd')if result1:print result1.group()result2 = re.search('\d+','dshfjasdsf23432dhfhsjdjfhjsd')print result2print result2.group()result3 = re.findall('\d+','dshfjasdsf23432dhfhsjdjfhjsd34')print result3#输出结果:<_sre.SRE_Match object at 0x0000000002BFA510>23432['23432', '34']
编译正则表达式re.compile
他和编译生成的.pyc文件差不多,.pyc是为了再次使用时快速调用。正则表达式也可以经过编译,编译之后匹配其他的也会加快匹配速度
com = re.compile('\d+')print type(com)输出结果:<type '_sre.SRE_Pattern'>他返回了一个对象
使用方法:
也就是直接调用返回对象findall函数
com = re.compile('\d+')print com.findall('dshfjasdsf23432dhfhsjdjfhjsd34')
练习匹配一个文件中的所有字符串
import ref = open('love.txt','r')feitian = f.read()f.close()print re.findall('a',feitian)##也可以一行一行的匹配f = open("love.txt", "r") while True: line = f.readline() if line: line=line.strip() p=line.rfind('.') filename=line[0:p] print line else: breakf.close()输出:['a', 'a', 'a']
正则表达式中的分组
result2 = re.search('(\d+)\w*(\d+)','dshfjasdsf23432dhfhs23423jdjfhjsd')print result2.group()print result2.groups()#输出结果:23432dhfhs23423('23432', '3')#注意: 他不重复拿,这里解释一下为什么第二个输出为3,因为中间都被\w*接收了,这里我们在给一个例子result2 = re.search('(\d+)dhfhs(\d+)','dshfjasdsf23432dhfhs23423jdjfhjsd')print result2.group()print result2.groups()输出结果:23432dhfhs23423('23432', '23423')
练习匹配一个字符串中的ip
import reip = 'sdhflsdhfj1723.234.234234.df.34.1234.df.324.xc.3+dsf172.25.254.1 sdfjk2130sdkjf.sdjfs'result1 = re.findall('(?:\d{1,3}\.){3}\d{1,3}',ip)result2 = re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',ip)print result1print result2#输出结果:['172.25.254.1']['172.25.254.1']
time 模块
import time print time.time()1510923748.06#计算从1970年1月1日到现在有多少秒print time.gmtime()time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=13, tm_min=2, tm_sec=28, tm_wday=4, tm_yday=321, tm_isdst=0)格式化成一个对象,他是当前的时间print time.strftime('%Y%m%d')20171117输出格式化之后的时间,他的格式化和linux一样
他们之间的转换
print time.strptime('2017-11-17','%Y-%m-%d')time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=321, tm_isdst=-1)#将字符串转化成结构化的时间格式print time.localtime()print time.mktime(time.localtime())time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=21, tm_min=17, tm_sec=57, tm_wday=4, tm_yday=321, tm_isdst=0)1510924677.0#结构化的时间转化成时间戳的格式#字符串格式的时间转时间戳格式他不能直接转,必须要中转
第一部分时间戳形式存在,第二部分以结构化形式存在,第三部分以字符串形式存在
一个参数代表脚本本身sys.exit(n) 退出程序,正常退出时exit(0)sys.version 获取Python解释程序的版本信息sys.maxint 最大的Int值sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值sys.platform 返回操作系统平台名称
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。