Пытаясь выяснить, как заставить CSV правильно открываться в Excel на испанском ПК (принадлежащем клиенту), я нашел много ответов, рекомендующих использовать sep=,
в верхней части файла:
- Самый простой способ открыть CSV с запятыми в Excel
- Как контролировать импорт CSV в Excel 2010
- Как открыть CSV-файлы, разделенные точкой с запятой, в американской версии Excel
- Пробел или табуляция как разделитель в CSV
- Как заставить Excel интерпретировать запятую как разделитель по умолчанию в файлах CSV?
На первый взгляд, этот подход работает, но ни один из этих ответов не дает никакой дополнительной информации о том, откуда берется эта опция метаданных. Я пытался найти, что это значит (и, следовательно, нашел все эти ответы), но не смог получить никакой дополнительной информации, особенно учитывая, что, как известно, пунктуацию трудно найти.
Моя главная проблема заключается в том, является ли это особенность Excel . Я подозреваю, что это так, но не нашел ничего определенного, чтобы подтвердить это.
Некоторые связанные вопросы:
- Какие символы можно использовать в этой настройке?
- Какие другие настройки доступны (например, символ завершения строки, символ кавычки и т. Д.).
- Существуют ли другие инструменты, которые официально поддерживают эту функцию?
Я надеюсь, что где-то есть документация, на которую кто-то может указать мне, который ответит на все эти вопросы и многое другое; Я просто не смог найти его.
Некоторые уточнения:
sep=
Не является параметром для синтаксического анализатора. Он предназначен для размещения внутри CSV. Пример:
sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
источник
Ответы:
RFC 4180 широко признан в качестве стандарта для формата CSV и не упоминает ни одной такой функции.
Модель W3C для табличных данных и метаданных в Интернете упоминает ее как функцию, не входящую в сферу их применения:
Поэтому, хотя я не нашел прямого доказательства того, что эта функция специфична для Excel, это, очевидно, все еще имеет место, поскольку, похоже, нет документа по стандартизации, охватывающего эту функцию.
источник
Чтобы ответить на один из ваших вопросов: «Есть ли другие инструменты, которые официально поддерживают эту функцию?»
Это не поддерживается Apple Numbers (я тестировал, используя Numbers версии 3.6.2).
Он также не поддерживается ни csv2json ( https://www.npmjs.com/package/csv2json ), ни csvtojson ( https://www.npmjs.com/package/csvtojson ).
источник
Инструкция sep = используется во всех странах, где запятая используется в качестве десятичного разделителя, как в Италии. Поскольку Excel экспортирует CSV, используя точки с запятой вместо запятых в этих странах, если вы хотите быть уверенным, что файл можно прочитать в США или других странах, вам НУЖНО
= сентября;
в верхней части файла. Это специфично для Excel и может игнорироваться другими приложениями.
источник
Практически любой инструмент, который может импортировать из файлов .csv, признает, что запятая не является единственным возможным разделителем, например, вкладки были распространены в течение длительного времени. Я думаю, что это восходит к временам перфокарт даже, что должен быть какой-то символ, который распознается как конец поля данных - за исключением систем, которые используют поля фиксированной ширины или поля с префиксом длины, почти каждая система нуждается в этом с момента появления компьютеров.
3 основных элемента - это разделитель полей, разделитель записей и маркер конца данных, CSV по умолчанию использует для них запятую, символ новой строки и конец файла соответственно, но можно использовать практически любой допустимый ввод, однако вам необходим механизм для экранирования специальных маркеров, если они встречаются в ваших действительных данных.
Одна историческая система, с которой я столкнулся, использовала новую строку для конца поля, 2 пустые строки для конца записи и
*!*!* END *!*!*
для конца данных. Я обычно сталкивался со всеми,\t|:
используемыми в качестве разделителя полей вместе с различными управляющими символами.С одной стороны, следует опасаться, что французы и другие используют запятую в качестве десятичной точки - это может вызвать все виды веселья и игр. Существует определенная степень стандартизации для CSV-файлов в rfc4180, но бывают случаи, когда вам необходимо вручную редактировать файлы при экспорте из одной программы и импорте в другую.
Например, чтобы ответить на вторую часть вашего вопроса, Python включает в себя одну из стандартных библиотек для чтения / записи csv, которая предлагает следующие опции:
delimiter
- Это разделитель полей (если не экранировано).doublequote
- Если это правда то"
в поле будет представлено как""
escapechar
- удаляет любое специальное значение из любого последующего символа, например, если он установлен,\
то кавычка может быть представлена как\"
lineterminator
- как правило , один из\n
,\r
,\r\n
или\n\r
quotechar
- символ, используемый для цитирования строк, обычно"
или'
quoting
- пометить как одно из:ALL
- Каждое поле в кавычках, то есть:"1","Free Beer","ASAP"
MINIMAL
- Только кавычки поля, которые имеют специальные символы, то есть:1,"Beer, (Free)", Now, Please
QUOTE_NONNUMERIC
- Цитировать все, что не является числом, то есть:1,"Beer, (Free)", "Now", "Please"
NONE
- Не указывайте вместо этого побег, то есть:1,Beer\, (Free), Now, Please
skipinitialspace
- пропустите любой начальный пробел каждого поля, чтобы вы могли использовать его,
вместо,
разделителя полей.Как правило, более гибкий и хорошо продуманный инструмент, который может импортировать CSV-файлы, - это то, что у него будет больше этих опций (возможно, с разными именами и / или механизмами).
источник
sep=
не является параметром для парсера. Я добавил некоторые уточнения к своему вопросу.sep=
это и откуда.