问题描述
我有一个.txt文件,其中包含字符串"2020-08-13T20:41:15.4227628Z"
我应该在Python 3.7的strptime
函数中使用哪种格式的代码?我尝试了以下操作,但'8'
之前的'Z'
并非有效的工作日
from datetime import datetime
timestamp_str = "2020-08-13T20:41:15.4227628Z"
timestamp = datetime.strptime(timestamp_str,'%Y-%m-%dT%H:%M:%s.%f%uZ')
ValueError: time data '2020-08-13T20:41:15.4227628Z' does not match format '%Y-%m-%dT%H:%M:%s.%f%uZ'
解决方法
.
之后的7位数字似乎是纳秒数。您可能有一种特定于平台的格式(由strftime(3)
定义)可以代替%f
使用,但如果没有,最好的选择是在尝试将其余字符串解析为之前删除掉尾随数字。时间戳。
regex = "(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}).(\d.*)"
if (m := re.match(regex,timestamp_str) is not None:
timestamp_str = "".join(m.groups())
timestamp = datetime.strptime(timestamp_str,'%Y-%m-%dT%H:%M:%S.%fZ')
,
除了7位数的小数秒,时间戳的格式大部分与ISO 8601一致。
- 第7位数字是1/10微秒;通常您的分辨率为3、6或9位(分别为毫秒,微秒或纳秒)。
- Z 表示UTC
在Python中,您可以方便地as I show here解析此格式。