Python - 具有未知行为的 strptime 格式
Python - strptime format with unknown behavior
我有一个时间格式:
Sat Jan 17 04:33:06 +0000 2015
我无法匹配 strptime 格式。我能找到的最接近的:basic datetime types 是 %c "Locale’s appropriate date and time representation." 但是,这并不完全匹配。
我打算:
time_vec = [datetime.strptime(str(x),'%c') for x in data['time']]
如有任何帮助,我们将不胜感激。
对我来说很好...:[=17=]
>>> s='Sat Jan 17 04:33:06 +0000 2015'
>>> f='%a %b %d %X %z %Y'
>>> import datetime
>>> datetime.datetime.strptime(s,f)
datetime.datetime(2015, 1, 17, 4, 33, 6, tzinfo=datetime.timezone.utc)
这在 Python 3.4 中。在 Python 2.7 中,我可以重现您的错误——它不接受应有的 %z
。当然,最好的解决方法是升级到 Python 3。如果你做不到,你需要一些技巧,比如:
import re
s = re.sub('[+-]\d+', '', s)
并从格式中删除 %z
。如果您确实需要该时区信息,请在 re.sub
到 "clean up" s
之前先提取它(使用 re.search
,相同的模式)以解决 Python 2 个错误。
>>> from dateutil import parser
>>> s = "Sat Jan 17 04:33:06 +0000 2015"
>>> dt = parser.parse(s)
>>> dt
datetime.datetime(2015, 1, 17, 4, 33, 6, tzinfo=tzutc())
这是使用 dateutil package to parse 您的字符串和 return 日期时间对象。
旁注:您引用的错误表明问题已在 Python 3.2 中解决。我的假设是您没有使用 Python 3,因此出现错误。
我有一个时间格式:
Sat Jan 17 04:33:06 +0000 2015
我无法匹配 strptime 格式。我能找到的最接近的:basic datetime types 是 %c "Locale’s appropriate date and time representation." 但是,这并不完全匹配。
我打算:
time_vec = [datetime.strptime(str(x),'%c') for x in data['time']]
如有任何帮助,我们将不胜感激。
对我来说很好...:[=17=]
>>> s='Sat Jan 17 04:33:06 +0000 2015'
>>> f='%a %b %d %X %z %Y'
>>> import datetime
>>> datetime.datetime.strptime(s,f)
datetime.datetime(2015, 1, 17, 4, 33, 6, tzinfo=datetime.timezone.utc)
这在 Python 3.4 中。在 Python 2.7 中,我可以重现您的错误——它不接受应有的 %z
。当然,最好的解决方法是升级到 Python 3。如果你做不到,你需要一些技巧,比如:
import re
s = re.sub('[+-]\d+', '', s)
并从格式中删除 %z
。如果您确实需要该时区信息,请在 re.sub
到 "clean up" s
之前先提取它(使用 re.search
,相同的模式)以解决 Python 2 个错误。
>>> from dateutil import parser
>>> s = "Sat Jan 17 04:33:06 +0000 2015"
>>> dt = parser.parse(s)
>>> dt
datetime.datetime(2015, 1, 17, 4, 33, 6, tzinfo=tzutc())
这是使用 dateutil package to parse 您的字符串和 return 日期时间对象。
旁注:您引用的错误表明问题已在 Python 3.2 中解决。我的假设是您没有使用 Python 3,因此出现错误。