re.sub интерпретирует escape-последовательности в строке замены ( docs ).Добавление дополнительной обратной косой черты перед \ f, чтобы избежать обратной косой черты, похоже, помогает:
import re
print re.sub(r'^[a-zA-Z]:\\.+(\\Data.+)', r'D:\\folder\1', r'C:\Some\Path\Data\File.txt')
Если ваша замещающая строка динамическая, вы всегда можете использовать другое регулярное выражение для экранирования обратной косой черты или использовать str.encode'юникода-побег').