CSV против TSV: Какой формат разделителя выбрать?
Быстрый ответ
Используйте CSV для общего обмена данными, импорта/экспорта таблиц и максимальной совместимости. Используйте TSV когда данные содержат запятые, но не табы, чтобы избежать quoting и экранирования. TSV распространён в биоинформатике и NLP; CSV — универсальный default.
Введение
CSV (Comma-Separated Values) и TSV (Tab-Separated Values) — два plain-text формата для табличных данных. Оба хранят строки как линии с полями, разделёнными разделителем. CSV использует запятые; TSV использует табы. Выбор разделителя влияет на экранирование, совместимость с электронными таблицами и обработку текстовых полей, содержащих разделитель.
Шаг за шагом
-
Сравните разделитель и экранирование
CSV использует запятые. Если поле содержит запятую, ее необходимо заключить в кавычки: «Смит, Джон». Если поле содержит кавычки, их необходимо экранировать: «Он сказал «привет»»». TSV использует вкладки. Табуляция редко появляется в текстовых данных, поэтому поля TSV обычно не требуют заключения в кавычки или экранирования — это упрощает синтаксический анализ.
-
Сравнить совместимость
CSV поддерживается повсеместно: Excel, Google Sheets=Sheets, любая база данных, любой язык программирования. TSV также широко поддерживается, но менее стандартизирован — некоторые инструменты интерпретируют вкладки по-разному. Excel автоматически определяет оба формата, но форматом экспорта по умолчанию является CSV.
-
Сравните сложность синтаксического анализа
Для анализа CSV требуется конечный автомат для обработки правил цитирования (RFC 4180). Разбор TSV тривиален: разделите каждую строку по символу табуляции. Это ускоряет анализ TSV и снижает вероятность ошибок. Однако CSV имеет формальную спецификацию (RFC 4180); TSV не имеет формального стандарта.
-
Сравните варианты использования
CSV: импорт/экспорт электронных таблиц, данные APIs, конвейеры ETL, файлы конфигурации, универсальный обмен данными. TSV: биоинформатика (BLAST, GFF), НЛП (формат CoNLL), данные буфера обмена (копия из Excel = TSV), файлы журналов с разделителями табуляции.
-
Решайте на основе ваших данных
Если ваши данные содержат запятые (имена, адреса, предложения): TSV избегает кавычек. Если ваши данные содержат табуляции (редко в тексте): CSV избегает кавычек. Если вам нужна максимальная совместимость: CSV. Если вам нужен более простой анализ и ваши данные не содержат табуляций: TSV.
Примеры
Те же данные в CSV и TSV.
Вход: CSV: имя,возраст,город\n"Смит, Джон",30,"Нью-Йорк, Нью-Йорк"\nTSV: имя\возраст\tгород\nСмит, Джон\t30\tНью-Йорк, Нью-Йорк
Выход: CSV требует кавычек для полей с запятыми. TSV не нуждается в кавычках, поскольку в данных не отображаются табуляции.
Распространенные проблемы
- CSV крайние случаи цитирования: поля, содержащие запятые, кавычки или символы новой строки, требуют правил цитирования RFC 4180 — простое разделение запятой приведет к повреждению данных со встроенными запятыми.
- TSV не имеет формального стандарта: в отличие от CSV (RFC 4180), TSV не имеет официальной спецификации, поэтому инструменты могут обрабатывать крайние случаи по-разному — используйте TSV только внутри контролируемых конвейеров.
- Проблемы с кодировкой Excel: Excel может экспортировать CSV со спецификацией или разделителями, зависящими от локали (точка с запятой в локалях ЕС) — укажите кодировку UTF-8 и проверьте разделитель при импорте.
- Неоднозначность новой строки: поля CSV со встроенными символами новой строки действительны, но нарушают построчный анализ — TSV редко сталкивается с этой проблемой, поскольку в текстовых данных табуляция встречается редко.
Советы
- Используйте CSV для максимальной совместимости — каждая электронная таблица, база данных и язык программирования поддерживают его изначально.
- Используйте TSV, если ваши данные содержат запятые, но не табуляции (имена, адреса, предложения), чтобы полностью избежать сложности кавычек.
- Всегда используйте правильный синтаксический анализатор CSV (не string.split) для обработки правил цитирования RFC 4180 — простое разделение повреждает поля со встроенными запятыми или кавычками.
- При копировании данных из Excel в текстовый редактор буфер обмена использует формат TSV — вставьте в файл .tsv, чтобы правильно сохранить поля с запятыми.