我需要解析出以下内容:
2012
01
02
16
50
00
出字符串(以这种格式):
2012-01-02 16:50:00 ABCABCABCABCABCABCABC
什么是一个简单的命令可以完成这个?
我需要解析出以下内容:
2012
01
02
16
50
00
出字符串(以这种格式):
2012-01-02 16:50:00 ABCABCABCABCABCABCABC
什么是一个简单的命令可以完成这个?
不要解析出单个组件;直奔datetime.datetime()
对象:
import datetime
dt = datetime.datetime.strptime(inputstr[:19], '%Y-%m-%d %H:%M:%S')
您仍然可以从中获取各个组件:
dt.year, dt.month, dt.day, ...
或将它们格式化回零填充字符串:
[format(v, '02') for v in dt.timetuple()[:6]]
演示:
>>> import datetime
>>> inputstr = '2012-01-02 16:50:00 ABCABCABCABCABCABCABC'
>>> dt = datetime.datetime.strptime(inputstr[:19], '%Y-%m-%d %H:%M:%S')
>>> dt.year, dt.month, dt.day
(2012, 1, 2)
>>> [format(v, '02') for v in dt.timetuple()[:6]]
['2012', '01', '02', '16', '50', '00']
要将datetime
值转换为自纪元以来的秒数,请使用time.mktime()
或calendar.timegm()
,具体取决于您的需要:
>>> from time import mktime
>>> mktime(dt.timetuple())
1325523000.0
>>> from calendar import timegm
>>> timegm(dt.utctimetuple())
1325523000
没有时区,这两种方法之间没有区别,有时区,后者总是将时间返回为 UTC。
>>> s='2012-01-02 16:50:00 ABCABCABCABCABCABCABC'
>>> s.split()[0].split('-')+s.split()[1].split(':')
['2012', '01', '02', '16', '50', '00']