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


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

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

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

Так, мысли?

7 165

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-разбора, которые я использовал, реализуют как отображение полей, так и выбор записей. Итак, чтобы прокомментировать свойства поля, добавьте запись только для описания полей. Чтобы прокомментировать запись, добавьте поле в конце ее (ну, все записи, действительно) только для комментариев.

Это единственные две причины, по которым я могу подумайте о том, чтобы прокомментировать 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 будет разбивать текст на запятые, сохраняя строку "комментарий" как одно значение столбца (и это будет удалите кавычки).