使用strptime进行Python解析 - 月日时间:分钟:秒年时区 - 与格式不匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用strptime进行Python解析 - 月日时间:分钟:秒年时区 - 与格式不匹配相关的知识,希望对你有一定的参考价值。

我在使用python(datetime.datetime.strptime)解析“Mar 3 03:00:04 2019 GMT”时遇到问题。我无法弄清楚问题是什么。起初我以为是因为这一天不是零填充,但根据文档,我发现事实并非如此。

import datetime
datetime.datetime.strptime("%b  %d %H:%M:%S %Y %Z", "Mar  3 03:00:04 2019 GMT")

我已经尝试删除并添加空格到格式字符串。我也尝试过没有时区说明符而没有运气。我试图解析的格式来自ssl套接字方法getpeercert

ValueError                                Traceback (most recent call last)
<ipython-input-14-a9f4aa24cc39> in <module>
----> 1 datetime.datetime.strptime("%b  %d %H:%M:%S %Y %Z", "Mar  3 03:00:04 2019 GMT")

/usr/lib/python3.7/_strptime.py in _strptime_datetime(cls, data_string, format)
    575     """Return a class cls instance based on the input string and the
    576     format string."""
--> 577     tt, fraction, gmtoff_fraction = _strptime(data_string, format)
    578     tzname, gmtoff = tt[-2:]
    579     args = tt[:6] + (fraction,)

/usr/lib/python3.7/_strptime.py in _strptime(data_string, format)
    357     if not found:
    358         raise ValueError("time data %r does not match format %r" %
--> 359                          (data_string, format))
    360     if len(data_string) != found.end():
    361         raise ValueError("unconverted data remains: %s" %

ValueError: time data '%b  %d %H:%M:%S %Y %Z' does not match format 'Mar  3 03:00:04 2019 GMT'

我应该使用的格式字符串是什么?

答案
datetime.datetime.strptime(date_string, format)

确切的语法应如上所述。改变参数的顺序是有效的。

datetime.datetime.strptime("Mar  3 03:00:04 2019 GMT","%b  %d %H:%M:%S %Y %Z")
datetime.datetime(2019, 3, 3, 3, 0, 4)
另一答案

你需要翻转args,即:

import datetime
datetime.datetime.strptime("Mar  3 03:00:04 2019 GMT", "%b  %d %H:%M:%S %Y %Z")

以上是关于使用strptime进行Python解析 - 月日时间:分钟:秒年时区 - 与格式不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Python strptime() 和时区?

Python 时间库:如何使用 strptime 和 strftime 保存 dst

python中time处理

不适用于python中的代码datetime.strptime

Python:如何解析和检查时间?

python时间处理,datetime中的strftime/strptime