我有这样的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做到这一点?
答案 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)}
可以像以前一样进行列表转换和排序。