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

203

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

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

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

Итак, мысли?

Pure.Krome
источник
1
Что бы вы прокомментировали? Значения в каждой строке или сам файл? Является ли XML-файл альтернативой для вас?
Square Rig Master
3
Предложение было сбито для Python .
new123456
2
Возможно строка версии для данных @SquareRigMaster. Так же, как я пытаюсь сделать сейчас?
Роб Уэллс
@SquareRigMaster - Или заявление об авторских правах.
Ричард Смит

Ответы:

116

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

skaffman
источник
23
RFC 4180 сейчас является стандартом.
vipw
34
RFC 4180 не является стандартом, rfc4180 сообщает: «Это примечание предоставляет информацию для интернет-сообщества. Оно не определяет какой-либо стандарт Интернета. Распространение этого примечания не ограничено».
Пол Вейберт
14
Хорошо, мы можем сказать, что это стандарт де-факто?
Марко Сулла
1
Все RFC являются записками, не предназначенными для предоставления какого-либо стандарта Интернета AFAIK
usr-local-ΕΨΗΕΛΩΝ
5
Да ... это не правда. Существуют стандартные трековые документы и нестандартные трековые (информационные) документы. Весь процесс, включая описания, процессы и правила для документов, выпущенных IETF, определяется RFC2026 с некоторыми последующими изменениями. Каждый RFC в начале будет указывать, на каком треке он находится.
Стив Хоул
31

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

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

Pedro_Uno
источник
30

Нет, 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

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

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

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

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

Тайлер Мамфорд
источник
2
Ааа, я только что прочитал, что вы не хотели настраивать процесс импорта. Прости насчет этого. Надеюсь, кто-нибудь найдет это полезным.
Тайлер Мамфорд
1
Хороший пост. Еще одна причина, по которой я могу подумать, почему вам могут понадобиться комментарии, - это добавить некоторые метаданные о файле в целом. Добавление целого столбца или строки только для одной ячейки с этой информацией выглядит немного неловко.
Бен Херши
3

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

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

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

pavium
источник
2
There is no standard which defines the contents of a CSV file Ложь.
Qix - МОНИКА БЫЛА ПОВРЕЖДЕНА
5
@Qix - из раздела 2 ссылочного документа: «Хотя существуют различные спецификации и реализации для формата CSV (например, [4], [5], [6] и [7]), формальной спецификации в существование »
Alien Technology
3

Если вы анализируете файл с помощью команды 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!
Кен Боб Сакстон
источник
1
!! Вы настоящий босой Кен Боб?
Джеффри Хейл,
2

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

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

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

"#My comment, something else"
1,2

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

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

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

Рожериу Гранато
источник