TSV в CSV: конвертируйте онлайн за секунды

💻 IT и кодОбновлено: 13 июля 2026 г.6 мин чтения
Вы работаете с данными и столкнулись с TSV-файлом, который нужно превратить в CSV? Рассказываю, как это сделать правильно: от однострочных команд в терминале до надёжного онлайн-конвертера. Без лишней теории — только проверенные методы на 2026 год.
⚡ Коротко: главное
  • TSV и CSV отличаются только разделителем: табуляция против запятой, но это критично при импорте в Excel или базы данных.
  • Стандартные утилиты вроде `sed` и `awk` справляются с простыми TSV за секунды, но дают сбой при кавычках и экранировании.
  • Онлайн-конвертер TSV в CSV корректно обрабатывает 100% edge-cases: пустые поля, кавычки внутри значений и многострочные записи.
  • В 2026 году в Excel 2021 по-прежнему важно явно указывать разделитель при импорте, иначе он может неправильно распарсить CSV.

Что такое TSV и CSV и почему их нужно различать

TSV (Tab-Separated Values) и CSV (Comma-Separated Values) — текстовые форматы для хранения табличных данных. Разница только в разделителе: в TSV это табуляция (\t), в CSV — запятая (,). Однако эта разница создаёт проблемы при импорте в электронные таблицы и базы данных. Например, Excel ожидает CSV с запятыми, а многие скрипты генерируют TSV как экспорт из баз. Поэтому конвертация — частая задача.

Правила экранирования общие для обоих форматов: если значение содержит разделитель или кавычку, оно заключается в двойные кавычки, а имеющиеся кавычки дублируются. В TSV экранировать табуляцию нужно реже — она редко встречается в данных, в отличие от запятых. Это делает TSV чуть более простым для ручного чтения, но менее совместимым.

Конвертация одной командой: sed и awk

Самый быстрый способ для простых TSV-файлов — командная строка. Используйте sed для замены табуляции на запятую. Важно: этот метод не обрабатывает кавычки и многострочные поля — только если в данных нет запятых или кавычек.

sed 's/\t/,/g' input.tsv > output.csv

Более надёжный — awk, который учитывает кавычки:

awk 'BEGIN { FS="\t"; OFS="," } { for(i=1;i<=NF;i++) { if($i ~ /[",\t\n]/) $i="\"" $i "\""; } print }' input.tsv > output.csv

Этот скрипт добавляет кавычки вокруг полей, содержащих запятую, табуляцию или новую строку. Но он всё ещё не идеален для вложенных кавычек.

Для Windows (PowerShell) есть Import-Csv с параметром -Delimiter "`t":

Import-Csv input.tsv -Delimiter "`t" | Export-Csv output.csv -NoTypeInformation

Конвертация с помощью Python: универсальный способ

Если нужна стопроцентная корректность, используйте встроенные модули Python — csv и io. Этот код читает TSV с корректной обработкой кавычек, экранирования и пустых строк:

import csv
import io

tsv_data = open('input.tsv', 'r', newline='', encoding='utf-8').read()
reader = csv.reader(io.StringIO(tsv_data), delimiter='\t')
csv_output = io.StringIO()
writer = csv.writer(csv_output, quoting=csv.QUOTE_MINIMAL)
for row in reader:
    writer.writerow(row)
open('output.csv', 'w', newline='', encoding='utf-8').write(csv_output.getvalue())

Разбор: csv.reader с delimiter='\t' разбирает TSV, автоматически обрабатывая кавычки. csv.writer с quoting=csv.QUOTE_MINIMAL добавляет кавычки только там, где нужно (если поле содержит разделитель, кавычку или перевод строки). Итоговый CSV будет строго стандартным.

Для больших файлов (гигабайты) обрабатывайте построчно без загрузки всего в память:

with open('input.tsv', 'r', newline='', encoding='utf-8') as fin, \
     open('output.csv', 'w', newline='', encoding='utf-8') as fout:
    reader = csv.reader(fin, delimiter='\t')
    writer = csv.writer(fout, quoting=csv.QUOTE_MINIMAL)
    for row in reader:
        writer.writerow(row)

Онлайн-конвертер TSV в CSV: когда нет доступа к скриптам

Если вы не разработчик или просто не хотите писать код, используйте TSV в CSV — проверенный онлайн-конвертер на русском языке. Он работает прямо в браузере, без отправки данных на сервер (всё обрабатывается на вашем устройстве), что гарантирует приватность.

Как пользоваться:

  1. Загрузите TSV-файл или вставьте текст.
  2. Выберите настройки: кавычки, кодировку, обработку пустых строк.
  3. Скачайте результат или скопируйте в буфер.

Конвертер корректно обрабатывает все edge-cases: значения с кавычками, многострочные ячейки, разную кодировку. В отличие от Excel, который при открытии TSV может неправильно распарсить данные из-за региональных настроек (в России десятичный разделитель — запятая, а разделитель списка — точка с запятой), онлайн-инструмент даёт чистый CSV, готовый к импорту.

Пошаговая конвертация TSV в CSV
  1. 1
    Оценить сложность данных

    Проверьте, есть ли в файле кавычки, запятые, многострочные поля.

  2. 2
    Выбрать инструмент

    Для простых — sed/awk, для сложных — Python или онлайн-конвертер.

  3. 3
    Запустить конвертацию

    Выполните команду или загрузите файл в конвертер.

  4. 4
    Проверить визуально

    Откройте CSV в текстовом редакторе, убедитесь в целостности строк.

  5. 5
    Импортировать в целевую систему

    Используйте Data Import с явным указанием разделителя — запятой.

Пять шагов для гарантированно корректного результата.

Таблица сравнения инструментов конвертации

ИнструментСкоростьОбработка кавычекПодходит для
sedМгновенноНетПростые файлы без запятых/кавычек
awkБыстроЧастичноБольшие файлы с простыми данными
Python csvСреднеДа (стандарт RFC 4180)Любые файлы, критична корректность
Онлайн-конвертерБыстроДаРазовые задачи, нет доступа к коду

Чек-лист для безошибочной конвертации

0 из 8

Подводные камни и частые ошибки

Самые частые проблемы: потеря кавычек, поломка многострочных полей и неверная кодировка.

Основные грабли:

  • Экранирование кавычек. В TSV кавычки внутри поля экранируются двойными кавычками. Если просто заменить табуляцию на запятую, кавычки сломаются. Всегда используйте инструмент, понимающий кавычки.
  • Многострочные поля. Значение может содержать перевод строки. Простая замена разобьёт запись. Только парсер с учётом кавычек (Python, онлайн-конвертер) это выдержит.
  • Кодировка. TSV часто бывает в UTF-8, но Excel в Windows по умолчанию ожидает ANSI (Windows-1251). Если открыть такой CSV в Excel, кириллица станет кракозябрами. Решение: сохраняйте CSV с BOM (Byte Order Mark) или конвертируйте в ANSI.
  • Разделитель в Excel. В русской версии Excel разделитель списка — «;» (точка с запятой), а не запятая. Поэтому CSV с запятыми может не открываться. Используйте csv.writer с delimiter=';' или настройте Excel.

Как проверить корректность конвертации

После конвертации обязательно проверьте результат. Вот простой алгоритм:

  1. Откройте CSV в текстовом редакторе (Notepad++, VS Code) — убедитесь, что строки не разбиты, кавычки расставлены симметрично.
  2. Импортируйте CSV в Excel через меню «Данные» → «Из текстового/CSV-файла», выбрав разделитель «запятая» и кодировку UTF-8. Проверьте, что все колонки совпадают с исходным TSV.
  3. Посчитайте количество строк: wc -l output.csv (Linux/Mac) или Get-Content output.csv | Measure-Object (PowerShell). Оно должно быть равно числу строк в TSV минус заголовок, если он был.
  4. Для автоматизированной проверки используйте diff после сортировки: diff <(sort input.tsv) <(sort output.csv) — но только если данные простые.

Если после конвертации данные отображаются криво — вернитесь к инструменту с полной обработкой кавычек.

Как отладить конвертацию: пример с цифрами шаг за шагом

Допустим, у вас TSV-файл с данными о продажах:

Имя\tГород\tСумма\tПримечание
Иван\tМосква\t\"1 500\"\t\"Товар \"\"A\"\"\"
Мария\t\"Санкт-Петербург\"\t2 000\t

Шаг 1: визуально оцениваем — есть кавычки и запятые в числах. Простая замена sed 's/\t/,/g' даст:

Иван,Москва,"1 500","Товар ""A"""
Мария,"Санкт-Петербург",2 000,

Шаг 2: это валидный CSV? Да, но поле Товар ""A""" — это значение Товар "A" (с двойной кавычкой внутри). Excel распознает правильно. Однако заметим, что в строке Марии после последней запятой ничего нет — это пустое поле, корректно.

Шаг 3: если бы использовали awk без кавычек, поле Санкт-Петербург было бы разбито запятой, что неверно. Python же сохранит всё как надо.

Теперь сравните с исходным: количество полей совпало, кавычки корректны. Конвертация успешна.

Частные случаи: TSV с заголовками, пустые строки, NULL-значения

Заголовки: если первая строка — заголовок, обычные методы её не трогают. Убедитесь, что конвертер не удаляет её.

Пустые строки: некоторые файлы содержат пустые строки (например, после экспорта). Они должны превратиться в пустые строки в CSV. Python-код выше пропускает их? Нет, csv.reader выдаёт по одной строке, пустая строка — это список с одним пустым полем? Нет, если строка пуста, reader вернёт пустой список, который writer запишет как пустую строку. Хорошо.

NULL-значения: в TSV часто пишут \N или NULL. Они останутся как текст. Если нужно заменить на пустоту, добавьте проверку в Python.

Пробелы в значениях: иногда TSV содержит пробелы вокруг табуляции (например, для читаемости). Перед конвертацией желательно их тримить. Python: strip() для каждого поля.

Очень большие файлы: если файл больше 1 ГБ, онлайн-конвертер может зависнуть. Используйте Python с построчной обработкой.

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Чем отличается TSV от CSV?

В TSV разделитель — табуляция, в CSV — запятая. В остальном правила одинаковы: кавычки для значений, содержащих разделитель, дублирование кавычек.

Можно ли открыть TSV в Excel?

Да, Excel открывает TSV, но часто путает разделители из-за региональных настроек. Лучше сначала конвертировать в CSV, а потом импортировать через Data → From Text/CSV.

Какой инструмент лучше всего подходит для конвертации TSV в CSV?

Для одноразовой задачи — онлайн-конвертер TSV в CSV. Для автоматизации — Python с модулем csv. Для быстрых простых файлов — sed или awk.

Почему после конвертации у меня сломались кавычки?

Вы использовали простую замену табуляции на запятую без учёта экранирования. Используйте инструмент, который понимает формат CSV (Python csv writer, онлайн-конвертер).

Как конвертировать TSV в CSV в Python?

Используйте модуль csv: csv.reader с delimiter='\t' для чтения и csv.writer с quoting=csv.QUOTE_MINIMAL для записи. Код из статьи даёт рабочий пример.

Что делать, если TSV содержит многострочные поля?

Многострочные поля экранируются кавычками. Только парсер, учитывающий кавычки (Python, онлайн-конвертер), обработает их правильно. Простая замена сломает строки.

Как сохранить русские буквы в CSV?

Используйте кодировку UTF-8. Для Excel Windows добавьте BOM (byte order mark) в начало файла. В Python: encoding='utf-8-sig' при записи.

Можно ли конвертировать CSV обратно в TSV?

Да, те же инструменты с обратными разделителями: csv.reader с delimiter=',' и csv.writer с delimiter='\t'. Или онлайн-конвертер с выбором разделителя.

Источники и нормативные документы

  1. RFC 4180 — Common Format and MIME Type for Comma-Separated Values (CSV) Files
  2. Python csv module documentation
  3. Microsoft Excel import CSV documentation

Ещё по теме «IT и код»