CSV: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м Удаление шаблонов: {{Нп4}}×2
 
(не показаны 32 промежуточные версии 21 участника)
Строка 1: Строка 1:
{{значения|CSV (значения)}}
{{значения|CSV (значения)}}
{{Файловый формат
{{Файловый формат
|название = CSV<br />Comma-Separated Values
|название = CSV<br>Comma-Separated Values
|icon =
|icon =
|logo =
|logo =
Строка 23: Строка 23:
|nocat=1
|nocat=1
}}
}}
'''CSV''' (от {{lang-en|Comma-Separated Values}} — значения, разделённые запятыми) — [[текстовый файл|текстовый]] [[Формат файла|формат]], предназначенный для представления табличных данных. Спецификация:
'''CSV''' (от {{lang-en|Comma-Separated Values}} — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.


Формат CSV стандартизирован не полностью. Идея использовать запятые для разделения полей очевидна, но при таком подходе возникают проблемы, если исходные табличные данные содержат запятые или переводы строк. Возможным решением проблемы запятых и переносов строк является заключение данных в кавычки, однако исходные данные могут содержать кавычки. Помимо этого термином «CSV» могут обозначаться похожие форматы, в которых разделителем является символ табуляции (TSV) или точка с запятой. Многие приложения, которые работают с форматом CSV, позволяют выбирать символ разделителя и символ кавычек.

== Спецификация ==
* Каждая [[Перевод строки|строка файла]] — это одна строка таблицы.
* Каждая [[Перевод строки|строка файла]] — это одна строка таблицы.
* Разделителем ({{lang-en|delimiter}}) значений колонок является символ [[Запятая|запятой]] (<code>,</code>). Однако на практике часто используются другие разделители, то есть формат путают с {{нп4|DSV||en|Delimiter-separated values}} и [[TSV]] (см. ниже).
* Разделителем ({{lang-en|delimiter}}) значений колонок является символ [[Запятая|запятой]] (<code>,</code>). Однако на практике часто используются другие разделители, то есть формат путают с [[DSV]] и [[TSV]] (см. ниже).
* Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными [[кавычки|кавычками]] (<code>"</code>). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.
* Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными [[кавычки|кавычками]] (<code>"</code>). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.


== Стандартизация ==
== Иные разделители ==
Большинство программ понимают под CSV более общий формат {{нп4|DSV||en|Delimiter-separated values}} ({{lang-en|delimiter-separated values}} — значения разделённые разделителем), допускающий использование иных символов в качестве разделителя. В частности, в русской и других [[Локаль|локалях]] запятая [[по умолчанию]] зарезервирована под [[десятичный разделитель]]. Поэтому как разделитель используется [[точка с запятой]] или [[табуляция]] (формат [[TSV]]).
Название формата — CSV (значения, разделённые запятыми) — указывает что для разделения полей используется запятая. Тем не менее термин «CSV» может использоваться для обозначения схожих форматов. Много программ понимают под CSV более общий формат [[DSV]] ({{lang-en|delimiter-separated values}} — значения разделённые разделителем), допускающий использование иных символов в качестве разделителя. В частности, в русской и других [[Локаль|локалях]] запятая [[по умолчанию]] зарезервирована под [[десятичный разделитель]]. Поэтому как разделитель используется [[точка с запятой]] или [[табуляция]] (формат [[TSV]]). Другие отличия родственных форматов: используемые кавычки (двойные или одинарные); используемый набор символов; использование первой строки как заголовка. Это значительно затрудняет перенос данных из одних программ в другие, несмотря на всю простоту реализации поддержки CSV.


=== Стандарт <nowiki>RFC 4180</nowiki> ===
Несмотря на наличие [[RFC]], на сегодняшний день под CSV, как правило, понимают набор значений, разделенных какими угодно разделителями, в какой угодно кодировке с какими угодно окончаниями строк. Это значительно затрудняет перенос данных из одних программ в другие, несмотря на всю простоту реализации поддержки CSV.
Существует RFC 4180, предназначенный для стандартизации и упрощения обмена данными в формате CSV. Он предъявляет, в частности, такие требования:

* окончание строк в стиле MS-DOS, символы (CR / LF).
* необязательная строка заголовка.
* каждая строка (запись) должна содержать одинаковое количество полей.
* поле может быть заключено в двойные кавычки.
* если поле содержит запятые, переносы строк, двойные кавычки, то это поле должно быть заключено в двойные кавычки. Если этого не сделать, то данные невозможно будет корректно обработать.
* символ двойной кавычки в поле должен быть удвоен.

Вместе с тем стандарт не рекомендует быть слишком строгим при обработке CSV-данных, получаемых от сторонних источников.


== Пример ==
== Пример ==
Исходный текст:
Исходный текст:
1997,Ford,E350,"ac, abs, moon",3000.00
<pre>
1999,Chevy,"Venture ""Extended Edition""", ,4900.00
1997,Ford,E350,"ac, abs, moon",3000.00
1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",4799.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",4799.00
</pre>
Результирующая таблица:
Результирующая таблица:
{| class="wikitable"
{| class="wikitable"
|1997||Ford||E350||ac, abs, moon||3000
|1997||Ford||E350||ac, abs, moon||3000
|-
|-
|1999||Chevy||Venture «Extended Edition»|| ||4900
|1999||Chevy||Venture "Extended Edition"|| ||4900
|-
|-
|1996||Jeep||Grand Cherokee||MUST SELL! air, moon roof, loaded||4799
|1996||Jeep||Grand Cherokee||MUST SELL! air, moon roof, loaded||4799
Строка 51: Строка 62:
Для русифицированного [[Microsoft Excel]] (при разделителе <code>;</code>) исходный текст будет выглядеть так:
Для русифицированного [[Microsoft Excel]] (при разделителе <code>;</code>) исходный текст будет выглядеть так:
<pre>
<pre>
1965;Пиксель;E240 – формальдегид (опасный консервант)!;"красный, зелёный, битый";3000,00
1965;Пиксель;E240 – формальдегид (опасный консервант)!;"красный, зелёный, битый";"3000,00"
1965;Мышка;"А правильней использовать ""Ёлочки""";;4900,00
1965;Мышка;"А правильней использовать ""Ёлочки""";;"4900,00"
"Н/д";Кнопка;Сочетания клавиш;"MUST USE! Ctrl, Alt, Shift";4799,00
"Н/д";Кнопка;Сочетания клавиш;"MUST USE! Ctrl, Alt, Shift";"4799,00"
</pre>
</pre>
Результирующая таблица:
Результирующая таблица:
Строка 65: Строка 76:


== Программы для редактирования CSV-файлов ==
== Программы для редактирования CSV-файлов ==
[[LibreOffice Calc]], [[Gnumeric]], [[Emacs]], [[Microsoft Excel]], [[Numbers]], [https://softconstructors.com/ru/applications/tablepro3/index.html ТаблицаПро], [[CSVed]], [[KSpread]], [[Google Docs]], [[Блокнот (программа)|Блокнот]].
Формат файла CSV поддерживается практически всеми электронными таблицами и системами управления базами данных, включая [[LibreOffice Calc]], [[Gnumeric]], [[Emacs]], [[Microsoft Excel]], [[Numbers]], [https://web.archive.org/web/20140407114802/https://softconstructors.com/ru/applications/tablepro3/index.html ТаблицаПро], [[CSVed]], [[KSpread]], [[Google Docs]].


Импорт и экспорт CSV-файлов возможен во многих инженерных пакетах, например, [[ANSYS]] и [[LabVIEW]].
Импорт и экспорт CSV-файлов возможен во многих инженерных пакетах, например, [[ANSYS]] и [[LabVIEW]].

== Примечания ==
{{примечания}}


== Ссылки ==
== Ссылки ==
* [https://www.mastpoint.com/csv-1203 CSV-1203 (English)] {{ref-en}}
* [https://arquivo.pt/wayback/20160516100434/https://www.mastpoint.com/csv-1203 CSV-1203 (English)]{{ref-en}}
* [https://www.rfc-editor.org/rfc/rfc4180.txt RFC 4180, спецификация] {{ref-en}}
* [https://www.rfc-editor.org/rfc/rfc4180.txt RFC 4180, спецификация]{{ref-en}}
* [https://tradeincome.ru/useful-content/RFC%204180%20rus.pdf <nowiki>RFC 4180</nowiki>, спецификация]{{Ref-ru}}
* [https://web.archive.org/web/20160803235150/https://tradeincome.ru/useful-content/RFC%204180%20rus.pdf <nowiki>RFC 4180</nowiki>, спецификация]{{Ref-ru}}
* [https://www.creativyst.com/Doc/Articles/CSV/CSV01.htm Примеры]
* [https://www.creativyst.com/Doc/Articles/CSV/CSV01.htm Примеры] {{Wayback|url=https://www.creativyst.com/Doc/Articles/CSV/CSV01.htm |date=20210404114001 }}
* [https://supercsv.sourceforge.net/csvSpecification.html Формальная спецификация на EBNF]
* [https://web.archive.org/web/20090125112358/https://supercsv.sourceforge.net/csvSpecification.html Формальная спецификация на EBNF]
{{compu-file-format-stub}}
{{compu-file-format-stub}}



Текущая версия от 21:11, 19 сентября 2024

CSV
Comma-Separated Values
Расширение .csv[1][2]
MIME-тип text/csv
Тип формата представление базы данных
Стандарт(ы) RFC 4180

CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.

Формат 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.

Примечания

[править | править код]