作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
这节内容链接:http://www.cnblogs.com/vamei/archive/2012/08/31/2661870.html#!comments
笔记:没看作者的datetime包,这节有难理解的地方,目前没有完成对日期时间的过滤,导致输出的带时间模块
#继续正则 ''' 常用语法: 1.单个字符 . 任意的字符 a|b 字符a或字符b [afg] a或者f 或者g的一个字符 [0-4] 0-4范围内的一个字符 [a-f] a-f范围内的一个字符 [^m] 非m [\s] 一个空格 [\S] 一个非空格 [\d] [0-9]数字0-9 [\D] [^0-9] \w [0-9a-zA-Z] 0-9 小写a-z 大写A-Z \W [^0-9a-zA-Z] 2.重复 跟在字符之后,表示多个这样类似字符 * 重复>= 0 次 + 重复>= 1 次 ? 重复 0次 或者1 次 {m} 重复m次,例:a{4} 相当于aaaa,[1-3]{2} 相当于[1-3][1-3] {m, n} 重复m到n次,例a{2, 5} 表示a重复2到5次,小于m次的重复,大于n次的重复都不符合条件 正则表达 符合字符串 释义 [0-9]{3,5} 9678 0-9的一个字符重复3-5次 a?b b ab ?跟在a后面,表示a重复0 或者1 ,ab b应该都符合 a+b aaaab +跟在a后面,重复>=1次 多个a存在 3.位置 ^ 字符串的起始位置 $ 字符串的结尾位置 正则表达式 符合字符串 不相符字符串 ^ab.*c$ ab44c cabeec 4.返回控制 是对搜索的信息进行进一步精简 output_(\d{4}) 括号(\d{4})包围了一个小的正则表达式,\d是数字,{4}数字重复4次,就是用于从结果中筛选想要的信息,就是4位数字 这样被括号起来的正则表达式的一部分,称为group print (re.search('([0-9]*)([a-z]*)([0-9]*)',a).group(0)) 所以上节里面就有了 3个group 可以用m.group(num) 来查询群,group(0)是整个正则表达的结果,group(1)是第一个括号 ''' import re m = re.search('output_(\d{4})', 'output_1986.txt') print (m.group(1)) print (m.group(0)) #输出 1986 第一个括号就是(\d{4})只匹配了数字 #输出 output_1986 完整的字符串 m = re.search('output_(?P<year>\d{4})', 'output_1986.txt') print (m.group('year')) print (m.group(1)) #(?P<name>...) 为group命名,所以group(1)就变成了year ''' 作业 有一个文件,文件名为output_1981.10.21.txt 。下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几。将文件改名为output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:两位的月份,DD:两位的日,W:一位的周几,并假设周一为一周第一天) ''' m = re.search('output_(?P<filedate>\d{4}.\d{2}.\d{2})', 'output_1981.10.21.txt') print (m.group('filedate')) filedate = m.group('filedate') print (filedate) print (type(filedate)) from datetime import datetime,date date = datetime.strptime('1981.10.21', '%Y.%m.%d') print (date) print (type(date)) dayofweek = datetime.date(date).weekday() print (dayofweek) ''' date = datetime.strptime('1981.10.19', '%Y.%m.%d') dayofweek = datetime.date(date).weekday() #now.weekday() 返回值从0开始,所以返回是2,其实是第三天 #所以10.19返回值 是0 ''' dayofweek = dayofweek + 1 print (dayofweek) targetfilename = 'output'+'_'+ str(date) + '-'+ str(dayofweek) +'.txt' print (targetfilename) #输出output_1981-10-21 00:00:00-3.txt
终于又结束一节
浙公网安备 33010602011771号