Может ли файл CSV иметь комментарий? - PullRequest
181 голосов
/ 25 декабря 2009

Есть ли какой-нибудь официальный способ разрешить файлу в формате CSV разрешать комментарии либо в отдельной строке, либо в конце строки?

Я пытался проверить Википедию на этом, а также RFC 4180 , но оба не упоминают ничего, что наводит меня на мысль, что это не часть формата файла, поэтому мне не повезло и тогда я должен использовать отдельный файл ReadMe.txt для объяснения этого файла.

Наконец, я знаю, что мне легко добавлять свои собственные комментарии, но я надеялся, что что-то вроде Excel может просто импортировать его без необходимости для потребителя настраивать процесс импорта.

Итак, мысли?

Ответы [ 7 ]

105 голосов
/ 25 декабря 2009

«Стандарт» CSV (такой, как он есть) не диктует, как должны обрабатываться комментарии, нет, дело за приложением, чтобы установить соглашение и придерживаться его.

26 голосов
/ 20 января 2013

В технических данных часто встречается символ # в первом столбце, используемый для обозначения комментария.

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

26 голосов
/ 25 декабря 2009

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

Самое близкое, что вы можете сделать (при импорте CSV в конкретное приложение, например, Excel), - это определить особый способ пометки комментариев, которые Excel будет игнорировать. В Excel вы можете «спрятать» комментарий (в ограниченной степени), встроив его в формулу. Например, попробуйте импортировать следующий файл CSV в Excel:

=N("This is a comment and will appear as a simple zero value in excel")
John, Doe, 24

В таблице все равно остается ячейка с номером 0, но комментарий скрыт.

Кроме того, вы можете скрыть текст, просто заполнив его пробелами, чтобы он не отображался в видимой части ячейки:

                              This is a sort-of hidden comment!,
John, Doe, 24

Обратите внимание, что вам необходимо следовать за текстом комментария через запятую, чтобы Excel заполнил следующую ячейку и, таким образом, скрыл любую часть текста, которая не помещается в ячейку.

Гадкие хаки, которые будут работать только с Excel, но их может быть достаточно, чтобы ваш вывод выглядел немного более аккуратным после импорта.

6 голосов
/ 02 июня 2012

Я думаю, что лучший способ добавить комментарии к CSV-файлу - добавить поле «Комментарии» или запись прямо в данные.

Большинство приложений для анализа CSV, которые я использовал, реализуют как отображение полей, так и выбор записей. Итак, чтобы прокомментировать свойства поля, добавьте запись только для описания полей. Чтобы прокомментировать запись, добавьте поле в конце (ну, на самом деле, все записи) только для комментариев.

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

Я ни в коем случае не эксперт, поэтому не стесняйтесь указывать на любые ошибки в моей теории.

3 голосов
/ 03 марта 2016

Если вы анализируете файл с помощью команды FOR в командном файле, точка с запятой работает (;)

REM test.bat contents

for /F "tokens=1-3 delims=," %%a in (test.csv) do @Echo %%a, %%b, %%c

;test.csv contents (this line is a comment)

;1,ignore this line,no it shouldn't

2,parse this line,yes it should!

;3,ignore this line,no it shouldn't

4,parse this line,yes it should!

ВЫВОД:

2, parse this line, yes it should!

4, parse this line, yes it should!
3 голосов
/ 25 декабря 2009

Файл с разделителями-запятыми - это на самом деле просто текстовый файл, в котором строки состоят из значений, разделенных запятыми.

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

Конечно, обычно это Excel. Вы должны спросить себя, как Excel определяет комментарий? Другими словами, что заставит Excel игнорировать строку (или часть строки) в файле CSV? Я не знаю ничего, что могло бы сделать это.

2 голосов
/ 05 июля 2012

Если вам нужно что-то вроде:

  │ A                              │ B
──┼────────────────────────────────┼───
1 │ #My comment, something else    │
2 │ 1                              │ 2

Ваш CSV может содержать следующие строки:

"#My comment, something else"
1,2

Обратите особое внимание на «кавычки» в первой строке.

При преобразовании текста в столбцы с помощью мастера Excel не забудьте установить флажок «Рассматривать последовательные разделители как единое целое», задав для него значение «кавычки» в качестве разделителя.

Таким образом, Excel разделит текст на запятые, сохранив строку комментария в виде значения одного столбца (и удалит кавычки).

...