liyihao

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

作者: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

 

终于又结束一节

posted on 2017-11-03 20:49  liyihao  阅读(189)  评论(0)    收藏  举报