Строки '\"'
и '"'
идентичны: обе они представляют собой одну двойную кавычку, поскольку последовательность \"
кодирует символ двойной кавычки (обычно для использования в строках, * кавычках * 1004).
Если вы действительно хотите использовать обратную косую черту перед кавычкой, вам нужно ее избежать:
fo.write(line.replace('"', '\\"'))
Чтобы не заменить первый и последний символ, вместо этого можно использовать регулярные выражения:
fo.write(re.sub('(?<!^)"(?!$)', '\\"', line))
Регулярное выражение состоит из отрицательного заглядывания назад ((?<!^)
; утверждение, что строка не начинается перед кавычкой), самого символа кавычки и отрицательного заглядывания ((?!$)
; утверждение, что нетстрока заканчивается после цитаты).
Демо