2016-02-12 79 views
2

我有数据以格式%Y-%m-%d%H进入:%M:%S.%f。Python Strptime偶尔会丢失微秒

因此,我使用基于该结构的数据进行工作,一旦出现蓝色月亮出现问题。因此,当某些事情中断时,我开始倾销它,并且我注意到最后的微秒丢失了。

我假定这意味着它已经死了0,它不是送它在所有而不是发送0.000000

我的头顶,我可以把它分解的“”并且每次计数len。将它分成%Y-%m-%d%H:%M:%S如果它低于微秒的长度,但是有没有一种处理毫秒丢失并用000代替的更好方法?

我抓住了毫秒丢失的转储和ValueError后面的投掷。我没有想到它我猜我认为它会发送.000000,但它似乎是最明显的问题http://puu.sh/n4BLT/9b3fb473fb.png

回答

2

为什么不只是尝试两个?

def parse_txt(txt): 
    try: 
     return datetime.datetime.strptime(txt, "%Y-%m-%d %H:%M:%S.%f") 
    except ValueError: 
     return datetime.datetime.strptime(txt, "%Y-%m-%d %H:%M:%S") 

parse_txt("2001-01-01 01:01:01") # => datetime.datetime(2001, 1, 1, 1, 1, 1) 
+0

上帝该死......它甚至不像我没有想到的那样,我认为它会忽略%f,测试并看到它失败然后忘记。 – PoweredByCoffee

+0

这是漫长的一天。感谢您花时间抱歉,这是毫无意义的。 – PoweredByCoffee

+0

您的咖啡价值很低 – donkopotamus