You can find first and last week and remove datetimes not contains year 2014
:
import calendar
c = calendar.Calendar().yeardatescalendar(2014)
#print c
#first week
print c[0][0][0]
[datetime.date(2013, 12, 30), datetime.date(2013, 12, 31), datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5)]
#last week
print c[-1][-1][-1]
[datetime.date(2014, 12, 29), datetime.date(2014, 12, 30), datetime.date(2014, 12, 31), datetime.date(2015, 1, 1), datetime.date(2015, 1, 2), datetime.date(2015, 1, 3), datetime.date(2015, 1, 4)]
#filter datetimes by list comprehension
print [x for x in c[0][0][0] if x.year == 2014]
[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5)]
print [x for x in c[-1][-1][-1] if x.year == 2014]
[datetime.date(2014, 12, 29), datetime.date(2014, 12, 30), datetime.date(2014, 12, 31)]
#replace first and last week
c[0][0][0] = [x for x in c[0][0][0] if x.year == 2014]
c[-1][-1][-1] = [x for x in c[-1][-1][-1] if x.year == 2014]
print c[0][0][0]
[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5)]
print c[-1][-1][-1]
[datetime.date(2014, 12, 29), datetime.date(2014, 12, 30), datetime.date(2014, 12, 31)]