为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守候你守候我 2021-04-01 14:11:56
我想获取给定年份-月份的所有日期,但结果不正确。在给定的年月中获取所有日期的更好方法是什么?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']预先感谢您的帮助?
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

将密钥从更改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']


查看完整回答
反对 回复 2021-04-20
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

也许有更好的方法,但是可以检查2006年1月1日至2006年1月31日之间的所有日期


import datetime


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


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)


查看完整回答
反对 回复 2021-04-20
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

你的情况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'] 

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)


查看完整回答
反对 回复 2021-04-20
  • 3 回答
  • 0 关注
  • 561 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号