如何使用Python3在日期列表中查找所有日期

时间:2018-08-04 22:09:58

标签: python string python-3.x list python-datetime

我有这样的UTC日期列表:

['2018-07-29T15:58:22.111904Z', '2018-07-29T15:59:22.033263Z', '2018-07-29T16:01:22.103157Z', '2018-07-30T11:41:22.032661Z', '2018-07-30T11:42:22.042215Z', '2018-07-31T12:31:21.062671Z']

这不是完整列表。我需要的是抓住整个列表中找到的所有日期。

因此,此列表:

['2018-07-29', '2018-07-30', '2018-07-31']

将被退回。

如何使用Python3做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以对字符串切片使用集合理解:

L = ['2018-07-29T15:58:22.111904Z', '2018-07-29T15:59:22.033263Z',
     '2018-07-29T16:01:22.103157Z', '2018-07-30T11:41:22.032661Z',
     '2018-07-30T11:42:22.042215Z', '2018-07-31T12:31:21.062671Z']

res = {i[:10] for i in L}

结果:

print(res)

{'2018-07-30', '2018-07-31', '2018-07-29'}

如果您需要列表并且不关心订单,请使用list(res)

如果您需要排序列表,请使用sorted(res)


如果强烈建议使用datetime对象,则应转换为datetime并使用date方法。这是第三方dateutil模块的一种方式:

from dateutil import parser

res = {parser.parse(i).date() for i in L}

print(res)

{datetime.date(2018, 7, 29),
 datetime.date(2018, 7, 30),
 datetime.date(2018, 7, 31)}

可以像以前一样进行列表转换和排序。