我需要解析以下内容:
2012
01
02
16
50
00
字符串(以这种格式):
2012-01-02 16:50:00 ABCABCABCABCABCABCABC
什么是完成此任务的简单命令?
答案 0 :(得分:5)
不要解析单个组件;直接找到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时间返回时间。
答案 1 :(得分:1)
>>> s='2012-01-02 16:50:00 ABCABCABCABCABCABCABC'
>>> s.split()[0].split('-')+s.split()[1].split(':')
['2012', '01', '02', '16', '50', '00']