将Unicode对象转换为列表中的日期时间对象
我想处理一个包含多个列表的列表,想把每个子列表中第一个元素的日期时间对象分开,下面是我的数据示例。
list = [[u'2014-09-02T23:00:00', 1, 1, u'msdn.microsoft.com', u'工程与技术', 1], [u'2014-09-02T23:00:00', 1, 1, u'qr.ae', u'未分类', 0], [u'2014-09-02T23:00:00', 1, 1, u'accounts.google.com', u'一般通信与日程安排', 0]]
我看到之前有个问题讨论了如何把Unicode格式的日期转换成日期对象(链接),于是我尝试了以下代码:
date_unicode = str(list[0].split('T'))
date = datetime.strptime(date_unicode, '%Y-%m-%dT%H:%S')
结果却出现了一个错误,提示说模块对象没有' strptime '这个属性。如果有人能帮我把这些Unicode格式的日期转换成实际的日期对象,我会非常感激。
2 个回答
0
from datetime import datetime
print [datetime.strptime(x[0],"%Y-%m-%dT%H:%M:%S") for x in l]
[datetime.datetime(2014, 9, 2, 23, 0), datetime.datetime(2014, 9, 2, 23, 0), datetime.datetime(2014, 9, 2, 23, 0)]
你需要使用 from datetime import datetime
,否则就要用 datetime.datetime.strptime
。
1
- 你的列表是二维的,所以你需要多一个索引,比如说
list[0][0]
。 - 你的
strptime()
格式可以直接接受整个 ISO8601 日期,所以你不需要用.split()
来分割。 strptime()
是datetime.datetime
这个类里的一个方法。
date_unicode = str(list[0][0])
date = datetime.datetime.strptime(date_unicode, '%Y-%m-%dT%H:%M:%S')
print date
最后,你的列表里有好几个元素,所以你需要用一个循环来处理它们:
newlist = [datetime.datetime.strptime(item[0], '%Y-%m-%dT%H:%M:%S')
for item in list]
print newlist