@ Джек прав, что вам лучше всего оставить \n
без изменений, поскольку в этом случае вы ожидаете его внутри двойных кавычек.
Как и в большинстве случаев, я думаю, что здесь важна последовательность. Насколько я знаю, ваши значения должны быть заключены в двойные кавычки, если они занимают несколько строк, содержат запятые или содержат двойные кавычки. В некоторых реализациях, которые я видел, все значения экранируются и заключаются в двойные кавычки, поскольку это упрощает алгоритм анализа (никогда не возникает вопрос об экранировании и двойных кавычках, и наоборот при чтении CSV).
Это не самое оптимизированное для пространства решение, но делает чтение и запись файла тривиальным делом, как для вашей собственной библиотеки, так и для других, которые могут потреблять его в будущем.