python回复sub与检索未按预期工作

2024-04-25 16:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用时间戳生成输出文件名和路径。所有部件都按预期工作,但是回复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'

应为“\output\End of Day\2014\08\18\UINVDEFF securities 08.18.2014.xlsx”


Tags: ofreoutputdatetime文件名时间groupxlsx
1条回答
网友
1楼 · 发布于 2024-04-25 16:47:14

^{}调用将其第一个参数解释为正则表达式模式:

{%Y\\%m\\%d\\UINVDEFF securities %m.%d.%Y}

如果只想用字符串中的另一个子字符串替换子字符串,请使用^{}

a.replace(b.group('timestamp'), now.strftime(b.group('timestamp'))[1:-1])

相关问题 更多 >