CSV
CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.
CSV Comma-Separated Values | |
---|---|
Расширение |
.csv |
MIME-тип | text/csv |
Тип формата | представление базы данных |
Стандарт(ы) | RFC 4180 |
Формат CSV стандартизирован не полностью. Идея использовать запятые для разделения полей очевидна, но при таком подходе возникают проблемы, если исходные табличные данные содержат запятые или переводы строк. Возможным решением проблемы запятых и переносов строк является заключение данных в кавычки, однако исходные данные могут содержать кавычки. Помимо этого термином «CSV» могут обозначаться похожие форматы, в которых разделителем является символ табуляции (TSV) или точка с запятой. Многие приложения, которые работают с форматом CSV, позволяют выбирать символ разделителя и символ кавычек.
Спецификация
- Каждая строка файла — это одна строка таблицы.
- Разделителем (англ. delimiter) значений колонок является символ запятой (
,
). Однако на практике часто используются другие разделители, то есть формат путают с DSV и TSV (см. ниже). - Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками (
"
). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.
Стандартизация
Название формата — CSV (значения, разделённые запятыми) — указывает что для разделения полей используется запятая. Тем не менее термин «CSV» может использоваться для обозначения схожих форматов. Много программ понимают под CSV более общий формат DSV (англ. delimiter-separated values — значения разделённые разделителем), допускающий использование иных символов в качестве разделителя. В частности, в русской и других локалях запятая по умолчанию зарезервирована под десятичный разделитель. Поэтому как разделитель используется точка с запятой или табуляция (формат TSV). Другие отличия родственных форматов: используемые кавычки: двойные или одинарные; используемый набор символов; использование первой строки как заголовка. Это значительно затрудняет перенос данных из одних программ в другие, несмотря на всю простоту реализации поддержки CSV.
Стандарт RFC 4180
Существует RFC 4180, предназначенный для стандартизации и упрощения обмена данными в формате CSV. Он предъявляет, в частности, такие требования:
- окончание строк в стиле MS-DOS, символы (CR / LF).
- необязательная строка заголовка.
- каждая строка (запись) должна содержать одинаковое количество полей.
- поле может быть заключено в двойные кавычки.
- если поле содержит запятые, переносы строк, двойные кавычки, то это поле должно быть заключено в двойные кавычки. Если этого не сделать, то данные невозможно будет корректно обработать.
- символ двойной кавычки в поле должен быть удвоен.
Вместе с тем стандарт рекомендует быть вольным в отношении данных, получаемых от сторонних источников, при обработке CSV.
Пример
Исходный текст:
1997,Ford,E350,"ac, abs, moon",3000.00 1999,Chevy,"Venture «Extended Edition»","",4900.00 1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",4799.00
Результирующая таблица:
1997 | Ford | E350 | ac, abs, moon | 3000 |
1999 | Chevy | Venture «Extended Edition» | 4900 | |
1996 | Jeep | Grand Cherokee | MUST SELL! air, moon roof, loaded | 4799 |
Для русифицированного Microsoft Excel (при разделителе ;
) исходный текст будет выглядеть так:
1965;Пиксель;E240 – формальдегид (опасный консервант)!;"красный, зелёный, битый";"3000,00" 1965;Мышка;"А правильней использовать ""Ёлочки""";;"4900,00" "Н/д";Кнопка;Сочетания клавиш;"MUST USE! Ctrl, Alt, Shift";"4799,00"
Результирующая таблица:
1965 | Пиксель | E240 — формальдегид (опасный консервант)! | красный, зелёный, битый | 3000 |
1965 | Мышка | А правильней использовать "Ёлочки" | 4900 | |
Н/д | Кнопка | Сочетания клавиш | MUST USE! Ctrl, Alt, Shift | 4799 |
Программы для редактирования CSV-файлов
Формат файла CSV поддерживается практически всеми электронными таблицами и системами управления базами данных, включая LibreOffice Calc, Gnumeric, Emacs, Microsoft Excel, Numbers, ТаблицаПро, CSVed, KSpread, Google Docs.
Импорт и экспорт CSV-файлов возможен во многих инженерных пакетах, например, ANSYS и LabVIEW.
Ссылки
- CSV-1203 (English) (англ.)
- RFC 4180, спецификация (англ.)
- RFC 4180, спецификация (рус.)
- Примеры Архивная копия от 4 апреля 2021 на Wayback Machine
- Формальная спецификация на EBNF