将Unicode对象转换为列表中的日期时间对象

0 投票
2 回答
2388 浏览
提问于 2025-04-19 16:46

我想处理一个包含多个列表的列表,想把每个子列表中第一个元素的日期时间对象分开,下面是我的数据示例。

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
  1. 你的列表是二维的,所以你需要多一个索引,比如说 list[0][0]
  2. 你的 strptime() 格式可以直接接受整个 ISO8601 日期,所以你不需要用 .split() 来分割。
  3. 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

撰写回答