您的位置:首页 > 编程语言 > Python开发

Python标准库__正则表达式练习

2016-11-18 10:39 337 查看
题目作者:Vamei 出处:http://www.cnblogs.com/vamei

有一个文件,文件名为output_1981.10.21.txt 。下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几。将文件改名为output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:两位的月份,DD:两位的日,W:一位的周几,并假设周一为一周第一天)。

代码如下:

import re
import os
import time
import datetime
filename = "output_1981.10.21.txt"  #要操作的文件名
m = re.match("output_(\d{4}.\d{2}.\d{2}).txt$", filename)  #括号圈起来的正则表达式的一部分,称为群
searchResult = m.group(1)     #以m.group(number)的方法来查询群
print("match result:%s"%searchResult)
dates = searchResult.split('.') #通过指定分隔符对字符串进行切片,放在一个表中返回
#print dates
for date in dates:  #通过for循环,取值
year = dates[0]
month = dates[1]
day = dates[2]
#print year
week = datetime.datetime(int(year), int(month), int(day)).strftime("%w")    #调用datetime对象的strftime()方法,来将datetime对象转换为特定格式的字符串
neweek = '%s-%s-%s-%s' %(year, month, day, week)
print neweek    #输出带week的日期
newfile = re.sub("\d{4}.\d{2}.\d{2}", neweek, filename) #在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。返回替换后的字符串。
print newfile
#os.rename('/data/sdv1/caoyang/HelloWorld/CyTest/output_1981.10.21.txt', '/data/sdv1/caoyang/HelloWorld/CyTest/output_1981-10-21.txt')  #rename(src, dst),重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。


import re
import os
import time
import datetime
filename = "output_1981.10.21.txt"  #要操作的文件名
m = re.match("output_(?P<year>\d{4}.\d{2}.\d{2}).txt$", "output_1981.10.21.txt")   #将群命名,以便更好地使用m.group查询
result = m.group('year')
print("match result:%s"%result)
dates = result.split('.')   #通过指定分隔符对字符串进行切片,放在一个表中返回
#print dates
for date in dates:      #通过for循环,取值
year = dates[0]
month = dates[1]
day = dates[2]
week = datetime.datetime(int(year), int(month), int(day)).strftime("%w")    #调用datetime对象的strftime()方法,来将datetime对象转换为特定格式的字符串
neweek = '%s-%s-%s-%s' %(year, month, day, week)
print neweek    #输出带week的日期
newfile = re.sub("\d{4}.\d{2}.\d{2}", neweek, filename) #在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。返回替换后的字符串。
print newfile
#os.rename('/data/sdv1/caoyang/HelloWorld/CyTest/output_1981.10.21.txt', '/data/sdv1/caoyang/HelloWorld/CyTest/output_1981-10-21.txt')  #rename(src, dst),重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息