我正在尝试使用时间戳生成输出文件名和路径。所有部件都按预期工作,但是re.sub没有给我我想要的结果。我在这里做错了什么?
>>> a = r'\output\End-of-Day\{%Y\%m\%d\UINVDEFF securities %m.%d.%Y}.xlsx'
>>> b = re.search(r'(?P<timestamp>\{[^}]*(%[A-Za-z])[^{]*\})', a)
>>> b.group('timestamp')
'{%Y\\%m\\%d\\UINVDEFF securities %m.%d.%Y}'
>>> now
datetime.datetime(2014, 8, 18, 11, 43, 47, 55000)
>>> now.strftime(b.group('timestamp'))[1:-1]
'2014\\08\\18\\UINVDEFF securities 08.18.2014'
>>> re.sub(b.group('timestamp'), now.strftime(b.group('timestamp'))[1:-1], a)
'\\output\\End-of-Day\\{%Y\\%m\\%d\\UINVDEFF securities %m.%d.%Y}.xlsx'
期待'\输出\结束日\ 2014 \ 08 \ 18 \ UINVDEFF证券08.18.2014.xlsx'
答案 0 :(得分:2)
re.sub
调用将其第一个参数解释为正则表达式模式:
{%Y\\%m\\%d\\UINVDEFF securities %m.%d.%Y}
如果您只想用字符串中的另一个替换子字符串,请使用string.replace
:
a.replace(b.group('timestamp'), now.strftime(b.group('timestamp'))[1:-1])