我正在处理需要在Python中转换为日期的字符串。在正常情况下,我的字符串将为%d/%m/%Y %H:%M:%S
。例如:
18/02/2013 09:21:14
但在某些情况下,我可以获得%d/%m/%Y %H:%M:%S:%ms
之类的内容,例如:06/01/2014 09:52:14:78
我想摆脱ms
位,但我需要弄清楚如何。我已经能够创建一个正则表达式,可以测试日期是否匹配:
mydate = re.compile("^((((31\/(0?[13578]|1[02]))|((29|30)\/(0?[1,3-9]|1[0-2])))\/(1[6-9]|[2-9]\d)?\d{2})|(29\/0?2\/(((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))|(0?[1-9]|1\d|2[0-8])\/((0?[1-9])|(1[0-2]))\/((1[6-9]|[2-9]\d)?\d{2})) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$")
s = "06/01/2014 09:52:14:78"
bool(mydate.match(s))
>>> False
但我不知道如何只获得有趣的部分,即06/01/2014 09:52:14
有什么想法吗?
答案 0 :(得分:2)
您可以使用positive lookbehind和re.sub()
:
>>> re.sub(r'(?<=\d{2}:\d{2}:\d{2}).*','','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'
答案 1 :(得分:1)
re.sub
功能
>>> re.sub(r'( \d{2}(:\d{2}){2}).*$',r'\1','06/01/2014 09:52:14:78')
'06/01/2014 09:52:14'
>>> re.sub(r'( \d{2}(:\d{2}){2}).*$,r'\1','8/02/2013 09:21:14')
'8/02/2013 09:21:14'
( \d{2}(:\d{2}){2}) matches
小时:min:sec`保存在捕获组1中
.*$
匹配毫秒
r'\1'
已替换为第一个caputre组的内容