如何使用python从字符串日期列表中获取给定月份的所有日期?

我想获取给定年份-月份的所有日期,但结果不正确。在给定的年月中获取所有日期的更好方法是什么?


d = ['2006-12-30', '2006-12-31', '2006-1-1', '2006-11-30', '2006-10-1','2006-9-30'] 


key = '2006-1'

[i for i in d if key in i]

它给出输出


['2006-12-30', '2006-12-31', '2006-1-1', '2006-11-30', '2006-10-1']

虽然我需要


['2006-1-1']

预先感谢您的帮助?


守候你守候我
浏览 562回答 3
3回答

大话西游666

将密钥从更改2006-1为2006-1->>> d = ['2006-12-30', '2006-12-31', '2006-1-1', '2006-11-30', '2006-10-1','2006-9-30'] >>> key = '2006-1-'>>> [i for i in d if key in i]['2006-1-1']但是更好的方法是将字符串转换为datetime对象,然后做出决定>>> from datetime import datetime>>> [i for i in d if datetime.strptime(i, '%Y-%m-%d').strftime('%Y-%m') == '2006-01']['2006-1-1']

慕无忌1623718

也许有更好的方法,但是可以检查2006年1月1日至2006年1月31日之间的所有日期import datetimed = ['2006-12-30', '2006-12-31', '2006-1-1', '2006-11-30', '2006-10-1','2006-9-30']&nbsp;dates_list = [datetime.datetime.strptime(date, '%Y-%m-%d').date() for date in d]low = datetime.datetime.strptime('2006-01-01', '%Y-%m-%d').date()up = datetime.datetime.strptime('2006-01-31', '%Y-%m-%d').date()within = [date for date in dates_list if low <= date <= up]print(within)

慕勒3428872

你的情况2006-1是在这两个2006-1和2006-12。那就是为什么你没有得到你预期的答案。您可以尝试以下方法:d = ['2006-12-30', '2006-12-31', '2006-1-1', '2006-11-30', '2006-10-1','2006-9-30']&nbsp;key = '2006-1'output= [i for i in d if i.split("-")[0]==key.split("-")[0] and i.split("-")[1]==key.split("-")[1]]print(output)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python