Merging two XMLs together in Python
Eliminate for loops where you can


You can probably be more aggressive with list comprehensions. I would replace your for programme in all_programmes with a list comprehension that calculated the date and created a list of indices to delete (but I suspect many others would vehemently disagree with this advice):

enumerated_programmes = enumerate(all_programmes)
to_keep = [i for i,p in enumerated_programmes if datetime.datetime.strptime(p.get('start'), DATETIME_FORMAT) &lt; svn_wks]
...
all_programmes = [all_programmes[i] for i in to_keep]


You can make a second list of indices that should be replaced with a newer record, using similar logic. 


Naming


Why not use old_programmes as a name instead of all_programmes to make the binary nature of the code clear?


Confusing code


Why is there a return statement at the bottom of your code? I didn't see any def statements so it's not clear what/why you're returning/


Use available Python functions


There is no need to combine append with a for loop. Instead you can extend one list with another. Say you have list a and list a. Use a.extend(b) rather than appending each element of b. The code will be clearer, shorter, and more efficient.
Similar to my advice above about using list comprehensions more aggressively, you could also using filter rather than if, else statements. This would take more logic out of your for loops, which is always a good thing.


DRY


You compute svn_weeks in each iteration of each of your for loopsbut it's a constant for whatever day you are running it. You should compute it once, before either of your for loops.