如果给定了年周范围,例如, start_year,start_week =(2019,45) 和 end_year,end_week =(2020,15)
在python中,我如何检查Year-Week是否在上述范围之内? 例如,对于Year = 2020和Week = 5,我应该得到一个“ True”。
答案 0 :(得分:1)
假设所有“年-周”对的格式都正确(因此没有(2019-74)
这样的东西,您可以通过以下方法进行检查:
start_year_week = (2019, 45)
end_year_week = (2020, 15)
under_test_year_week = (2020, 5)
in_range = start_year_week <= under_test_year_week < end_year_week # True
Python通过首先比较第一个元素来进行元组比较,如果相等,则比较第二个,依此类推。这就是您想要的,甚至不将其视为实际日期/星期:D(根据是否要包含<
或<=
使用(2019, 45)
或(2020, 15)
还是没有。)
答案 1 :(得分:0)
您可以将年和周解析为datetime
对象。如果您对测试年/周进行相同的操作,则可以使用比较运算符来查看它是否在该范围内。
from datetime import datetime
start_year, start_week = (2019, 45)
end_year, end_week = (2020, 15)
# start date, beginning of week
date0 = datetime.strptime(f"{start_year} {start_week} 0", "%Y %W %w")
# end date, end of week
date1 = datetime.strptime(f"{end_year} {end_week} 6", "%Y %W %w")
testyear, testweek = (2020, 5)
testdate = datetime.strptime(f"{testyear} {testweek} 0", "%Y %W %w")
date0 <= testdate < date1
# True
答案 2 :(得分:-1)
start = (2019, 45)
end = (2020, 15)
def isin(q):
if end[0] > q[0] > start[0]:
return True
elif end[0] == q[0]:
if end[1] >= q[1]:
return True
else:
return False
elif q[0] == start[0]:
if q[1] >= start[1]:
return True
else:
return False
else:
return False
尝试一下: print(isin((2020,5)))>>>>>是