Вы можете использовать datetime.timedelta()
:
import datetime
now = datetime.datetime.now().isocalendar()
l6ww = [(datetime.datetime.now() - datetime.timedelta(weeks=x)).isocalendar() for x in range(6)]
final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww][::-1]
Доходность:
['18WW35', '18WW36', '18WW37', '18WW38', '18WW39', '18WW40']
Это будет работать, даже если вы перейдете в новый год, вперед на x недель или в прошломх недель.Вы также можете немного изменить этот код, чтобы продвигаться вперед:
l6ww = [(datetime.datetime.now() + datetime.timedelta(weeks=x)).isocalendar() for x in range(15)]
final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww]
Выход:
['18WW40', '18WW41', '18WW42', '18WW43', '18WW44', '18WW45', '18WW46', '18WW47', '18WW48', '18WW49', '18WW50', '18WW51', '18WW52', '19WW1', '19WW2']