我有绳子19:04:01:94891
。
当我将此传递datetime.datetime.strptime()
为:
datetime.strptime('19:04:01:94891', "%H:%M:%S:%f")
我得到以下结果:
datetime.datetime(1900, 1, 1, 19, 4, 1, 948910)
但是我希望结果是:
datetime.datetime(1900, 1, 1, 19, 4, 1, 94891)
区别在于microseconds
。
从文件中读取字符串时,如何在不修改字符串的情况下获得预期的结果?
问题是您的输入不是零填充的,因此如果我们以11微秒为单位,则问题将更加严重。让我们从源头上解决问题,然后首先清理输入:
def fixMicroseconds(timestamp):
parts = timestamp.split(':')
return ':'.join(
parts[:-1] + ['{:06d}'.format(int(parts[-1]))]
)
现在,它将按照Python的喜欢零填充到6位数字。
这是此工作的示例:
In [1]: def fixMicroseconds(timestamp):
....: parts = timestamp.split(':')
....:
....: return ':'.join(
....: parts[:-1] + ['{:06d}'.format(int(parts[-1]))]
....: )
....:
In [2]: fixMicroseconds('19:04:01:94891')
Out[2]: '19:04:01:094891'
In [3]: fixMicroseconds('19:04:01:13')
Out[3]: '19:04:01:000013'
In [4]: datetime.datetime.strptime(fixMicroseconds('19:04:01:94891'), "%H:%M:%S:%f")
Out[4]: datetime.datetime(1900, 1, 1, 19, 4, 1, 94891)
确实需要在调用之前清理输入strptime()
,因为这是strptime()
期望的值(6位数字)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句