0

我需要解析出以下内容:

2012
01
02
16
50
00

出字符串(以这种格式):

2012-01-02 16:50:00 ABCABCABCABCABCABCABC

什么是一个简单的命令可以完成这个?

4

2 回答 2

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。

于 2013-05-28T19:33:34.120 回答
1
>>> s='2012-01-02 16:50:00 ABCABCABCABCABCABCABC'
>>> s.split()[0].split('-')+s.split()[1].split(':')
['2012', '01', '02', '16', '50', '00']
于 2013-05-28T19:34:31.293 回答