Может ли файл CSV иметь комментарий?

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

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

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

Так, мысли?

7 ответов


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


нет, 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, но их может быть достаточно, чтобы ваш вывод выглядел немного аккуратнее после импорта.


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

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


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

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

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

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


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

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

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


Если вы анализируете файл с помощью команды 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!

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

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

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

"#My comment, something else"
1,2

обратите пристальное внимание на "котировки" в первой строке.

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

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