mustang 发表于 2017-4-21 15:27:22

正则表达 替换

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

gopythoner 发表于 2017-4-21 16:30:37

{:9_218:}
我是翻着网页的datetime的用法写的一个函数‘可以实现你的要求
你随便输入一个文件的名称试试吧
import re
import datetime
from datetime import *

def test(f):
date1 = re.findall("(\d{4}\.\d{1,2}\.\d{1,2})\.",f)
date = "-".join(date1.split("."))
timeTuple = datetime.strptime(date, "%Y-%m-%d")
y = timeTuple.year
m = timeTuple.month if timeTuple.month>9 else"0"+str(timeTuple.month)
d = timeTuple.day if timeTuple.day>9 else"0"+str(timeTuple.day)
w = timeTuple.isoweekday()
newdate = "-".join(list(map(str,)))
newname=f.replace(date1,newdate)
print(newname)
return newname

f = "output_2017.4.21.txt"
test(f)
>>>output_2017-04-21-5.txt

gopythoner 发表于 2017-4-21 16:33:34

gopythoner 发表于 2017-4-21 16:30
我是翻着网页的datetime的用法写的一个函数‘可以实现你的要求
你随便输入一个文件的名称试试 ...

加注释的:
import re
import datetime
from datetime import *

def test(f):
#正则匹配,提取时间字符串
date1 = re.findall("(\d{4}\.\d{1,2}\.\d{1,2})\.",f)
date = "-".join(date1.split("."))
# 将字符串转换成时间格式
timeTuple = datetime.strptime(date, "%Y-%m-%d")
y = timeTuple.year#年
m = timeTuple.month if timeTuple.month>9 else"0"+str(timeTuple.month)#月,不足两位数的加0
d = timeTuple.day if timeTuple.day>9 else"0"+str(timeTuple.day)   #同上
w = timeTuple.isoweekday()#星期
newdate = "-".join(list(map(str,)))
#替换原来的文件名称中日期
newname=f.replace(date1,newdate)
print(newname)
return newname

f = "output_2017.4.21.txt"
test(f)

mustang 发表于 2017-4-24 10:59:47

本帖最后由 mustang 于 2017-4-24 11:02 编辑

gopythoner 发表于 2017-4-21 16:30
我是翻着网页的datetime的用法写的一个函数‘可以实现你的要求
你随便输入一个文件的名称试试 ...

谢啦!!我也是翻着datetime的用法,实现了前面的,最后一步就卡了!
有个问题,为什么写了   import   datetime还写   from   datetimeimport*    ??

gopythoner 发表于 2017-4-24 11:09:05

mustang 发表于 2017-4-24 10:59
谢啦!!我也是翻着datetime的用法,实现了前面的,最后一步就卡了!
有个问题,为什么写了   import...

举个栗子:
模块A,有一个函数a()
如果是import A,那当你要用a函数的时候需要这样用 A.a()
但是如果我是from A import * 的话,我就可以直接a()这样使用
同理,其实就是为了使用datetime里面的其他方法或者函数可以不用在前面带上datetime.

mustang 发表于 2017-4-24 12:09:38

gopythoner 发表于 2017-4-24 11:09
举个栗子:
模块A,有一个函数a()
如果是import A,那当你要用a函数的时候需要这样用 A.a()


明了!!{:9_235:}
页: [1]
查看完整版本: 正则表达 替换