Новые строки в выводе с разделителями табуляции или запятыми - PullRequest
3 голосов
/ 22 июня 2010

Я ищу некоторые рекомендации в отношении обработки файлов CSV и табуляции с разделителями.

Для файлов CSV я уже выполняю некоторое форматирование, если значение содержит запятую или двойные кавычки, но что, если значение содержитсимвол новой строки?Должен ли я оставить новую строку без изменений и заключить значение в двойные кавычки + экранировать все двойные кавычки в пределах значения?

Тот же вопрос для файлов с разделителями табуляции.Я предполагаю, что ответ был бы очень похож, если бы не тот же самый.

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Обычно вы сохраняете \n без изменений, используя тот факт, что символ новой строки будет заключен в строку " ". Это не создает двусмысленности, но очень уродливо, если вам нужно взглянуть на файл с помощью обычного текстового редактора.

Но это то, что вы должны делать, поскольку вы ничего не избегаете внутри строки в CSV, за исключением самой двойной кавычки.

0 голосов
/ 22 июня 2010

@ Джек прав, что вам лучше всего оставить \n без изменений, поскольку в этом случае вы ожидаете его внутри двойных кавычек.

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

Это не самое оптимизированное для пространства решение, но делает чтение и запись файла тривиальным делом, как для вашей собственной библиотеки, так и для других, которые могут потреблять его в будущем.

...