如何解析python中的子串?

时间:2013-05-28 19:31:39

标签: python

我需要解析以下内容:

2012
01
02
16
50
00

字符串(以这种格式):

2012-01-02 16:50:00 ABCABCABCABCABCABCABC

什么是完成此任务的简单命令?

2 个答案:

答案 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']