我正在尝试使用以下代码从此字符串2017-11-07 16:56:34.787-08
获取时间:
from datetime import datetime
my_string = '2017-11-07 16:56:34.787-08'
dt = datetime.strptime(my_string, "%Y-%m-%d %H:%M:%S.%f")
然而,my_string
稍微有点独特,因为它附加了后面附加的-08
,有时它可能是3位数形式,例如。 -123
使用split(' - ')而不是做一个迂回方法,然后删除最后一个元素,是否有更好的方法可以直接获得时间?
答案 0 :(得分:1)
我建议使用rsplit()
,这样可以避免join()
split()
strptime()
结果(因为日期包含其他破折号)。
from datetime import datetime
my_string = '2017-11-07 16:56:34.787-08'
date_string, _ = my_string.rsplit('-', 1)
dt = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S.%f")
print(dt)
# 2017-11-07 16:56:34.787000
无法使用must match字符忽略,日期字符串和格式{{3}}:
如果 string [...]在解析后有过多的数据,则会引发
ValueError
。