CSV в TSV: простой способ и онлайн-конвертер
- CSV использует запятые, TSV — табуляцию; в TSV реже нужны кавычки, поэтому он компактнее.
- Правильная конвертация требует экранирования кавычек и табуляций внутри полей.
- Стандарт RFC 4180 (CSV) и IANA (TSV) различают обязательное экранирование.
- Онлайн-конвертер CSV в TSV мгновенно переводит файлы до 50 МБ с автоопределением диалекта.
- Для больших файлов (гигабайты) используйте awk или Python — консольные утилиты не загружают всё в память.
- Что такое CSV и TSV и в чём разница
- Конвертация CSV в TSV с помощью Python
- Конвертация через командную строку (awk, sed)
- Онлайн-конвертер: CSV в TSV
- Конвертация на языках программирования (bash, PowerShell, PHP)
- Подводные камни и отладка
- Какой способ выбрать?
- Edge cases: пустые поля, кавычки, Unicode
- Автоматизация конвертации
Что такое CSV и TSV и в чём разница
CSV (Comma-Separated Values) и TSV (Tab-Separated Values) — текстовые форматы табличных данных. Разница только в разделителе: в CSV это запятая (,), в TSV — табуляция (\t).
Из-за разделителя возникают различия в экранировании:
- В CSV поля с запятыми, кавычками или переносами строк обязательно заключаются в двойные кавычки, а кавычки внутри удваиваются.
- В TSV экранирование нужно только для табуляции и символов перевода строки; кавычки можно не использовать, если поля не содержат табуляцию.
Пример идентичных данных в CSV и TSV:
CSV:
"Name","Age","City"
"John, Doe","25","New York"
"Jane \"Smith\"","30",""
TSV:
Name\tAge\tCity
John, Doe\t25\tNew York
Jane "Smith"\t30\tКонвертация CSV в TSV с помощью Python
Python с модулем csv — самый надёжный способ для сложных случаев. Учитывает все правила экранирования.
Пример конвертации файла data.csv в data.tsv:
import csv
with open('data.csv', 'r', newline='', encoding='utf-8') as f_in:
reader = csv.reader(f_in)
with open('data.tsv', 'w', newline='', encoding='utf-8') as f_out:
writer = csv.writer(f_out, delimiter='\t', quoting=csv.QUOTE_MINIMAL)
for row in reader:
writer.writerow(row)Подводные камни:
- Разные диалекты CSV (excel, unix) — задавайте
dialect='excel'если нужно. - Кодировка: если файл в cp1251, укажите
encoding='cp1251'. - Поля с табуляцией внутри — Python автоматически заключит их в кавычки.
Если файл содержит многострочные поля, обязательно укажите newline='', иначе чтение сломается.Конвертация через командную строку (awk, sed)
Для быстрой замены разделителя без экранирования (когда поля чистые) — используйте консольные утилиты.
| Команда | Описание | Пример |
|---|---|---|
tr ',' '\t' | Простая замена запятой на табуляцию | tr ',' '\t' < file.csv > file.tsv |
sed 's/,/\t/g' | Замена через регулярное выражение | sed 's/,/\t/g' file.csv > file.tsv |
awk -v FPAT='([^,]+)|("[^"]+")' ... | Учёт кавычек (частичный) | awk 'BEGIN{FS=",";OFS="\t"}{for(i=1;i<=NF;i++) gsub(/^"/,"",$i); gsub(/"$/,"",$i); print}' file.csv |
Важно: Эти методы не обрабатывают экранированные кавычки и запятые внутри полей. Только для простых CSV без кавычек.
Если данные содержат кавычки, никогда не используйте простую замену запятых — вы сломаете структуру.
Онлайн-конвертер: CSV в TSV
Самый простой способ для одноразовой конвертации или для пользователей без технического опыта — воспользоваться нашим CSV в TSV онлайн-конвертером.
Возможности:
- Автоматическое определение диалекта CSV (разделитель, символ кавычек, экранирование).
- Поддержка файлов до 50 МБ.
- Настройка кодировки (UTF-8, Windows-1251, KOI8-R).
- Сохранение результата в TSV или копирование в буфер.
Просто загрузите CSV-файл и скачайте TSV — никаких настроек.
Если нужно конвертировать и в другие форматы: CSV в JSON, CSV в XML, CSV в XLSX, CSV в SQL INSERT.
- 11. Определить диалект CSV
Узнать разделитель, символ кавычек и экранирование.
- 22. Выбрать инструмент
Python для сложных, онлайн-конвертер для простых файлов.
- 33. Проверить кодировку
Указать правильную кодировку во избежание кракозябр.
- 44. Выполнить конвертацию
Запустить скрипт или загрузить файл в конвертер.
- 55. Проверить первые строки
Убедиться, что табуляции и кавычки корректны.
- 66. Проверить количество столбцов
Все строки должны иметь одинаковое количество полей.
- 77. Использовать данные
TSV готов для импорта в базы, Excel или анализа.
Конвертация на языках программирования (bash, PowerShell, PHP)
Краткие решения для разных окружений:
| Инструмент | Команда/код | Примечание |
|---|---|---|
Bash + mlr (Miller) | mlr --csv --otsv cat data.csv > data.tsv | Учитывает кавычки, поддерживает Unicode. |
| PowerShell | Import-Csv data.csv | Export-Csv -Delimiter "`t" -NoTypeInformation data.tsv | Автоматически экранирует. |
| PHP | $f=fopen('data.csv','r'); $w=fopen('data.tsv','w'); while(($r=fgetcsv($f))!==false) fputcsv($w,$r,"\t"); | Работает как Python. |
| Node.js (csv-parser) | const csv=require('csvtojson'); csv().fromFile('data.csv').then(j=>{ /* write TSV */ }); | Требует дополнительной записи. |
Выбор зависит от среды: Miller идеален для Linux, PowerShell — для Windows.
✅ Чек-лист перед конвертацией CSV в TSV
0 из 8
Подводные камни и отладка
Частые ошибки при конвертации CSV в TSV:
- Пропуск экранирования: запятые внутри поля без кавычек при простой замене разделителя.
- Потеря многострочных полей: строки с переносами внутри — нужна обработка построчно.
- Некорректная кодировка: символы в cp1251 отображаются кракозябрами в UTF-8.
- Пробелы после запятых: невидимые пробелы становятся частью данных — используйте
strip().
Как отлаживать:
- Проверьте первые 10 строк TSV:
head -10 file.tsv | cat -A(табуляции покажутся как^I). - Сравните количество столбцов:
awk -F'\t' '{print NF}' file.tsv | sort | uniq -c— все строки должны иметь одинаковое число. - Используйте онлайн-конвертер CSV в TSV как эталон.
Какой способ выбрать?
Выбор зависит от размера данных и сложности:
- Разовый небольшой файл (<50 МБ): используйте CSV в TSV онлайн — быстро и без ошибок.
- Регулярная задача: напишите скрипт на Python — надёжно и настраиваемо.
- Гигабайтные CSV: awk или Miller не загружают всё в память.
- Windows-среда: PowerShell использует встроенные cmdlet’ы.
Если данные содержат много кавычек или переносов строк, избегайте однострочных sed/tr — используйте полноценный парсер.
Edge cases: пустые поля, кавычки, Unicode
Обработка граничных случаев критична для целостности данных.
- Пустые поля: CSV:
,,→ TSV:\t\t. Все инструменты корректно передают пустые значения. - Кавычки внутри поля: CSV:
"He said ""Hello"""→ TSV:He said "Hello"(кавычки не нужно экранировать, если нет табуляции). - Табуляция внутри поля: CSV: поле с табуляцией должно быть в кавычках; TSV: требуется экранирование табуляции (или заключение в кавычки). Пример:
"col1\tcol2"→"col1\tcol2"(в TSV тоже в кавычках). - Unicode: эмодзи, кириллица, иероглифы. Проблемы только если исходный файл в однобайтовой кодировке.
Тестовый пример сложного CSV:
ID,Name,Notes
1,"John, Doe","Line1\nLine2"
2,"Jane ""Smith""","Tab\there"
3,,После конвертации в TSV должно быть:
ID\tName\tNotes
1\tJohn, Doe\tLine1\nLine2
2\tJane "Smith"\tTab\there
3\t\tАвтоматизация конвертации
Для регулярной конвертации интегрируйте скрипт в пайплайн.
Пример bash-функции для конвертации всех CSV в папке:
csv2tsv() {
for f in "$@"; do
python3 -c "import csv,sys; r=csv.reader(sys.stdin); w=csv.writer(sys.stdout,delimiter='\t')
for row in r: w.writerow(row)" < "$f" > "${f%.csv}.tsv"
done
}Использование: csv2tsv *.csv.
Для CI/CD можно использовать онлайн-конвертер через API (если доступен).
🧮 Посчитайте сами — инструменты по теме
🧭 Разделы по теме
Частые вопросы
Чем отличается CSV от TSV?
CSV использует запятую в качестве разделителя полей, TSV — табуляцию. В CSV чаще требуется экранирование кавычками, в TSV — реже.
Можно ли конвертировать CSV в TSV без потери данных?
Да, если использовать инструмент, учитывающий экранирование (Python, Miller, онлайн-конвертер). Простая замена запятых на табуляцию сломает данные с кавычками.
Как конвертировать CSV в TSV в Python?
Используйте модуль csv: csv.reader для чтения и csv.writer с delimiter='\t' для записи. Укажите кодировку и режим newline=''.
Как конвертировать CSV в TSV в командной строке Linux?
Для простых файлов: tr ',' '\t' file.tsv. Для сложных: используйте Miller (mlr --csv --otsv cat) или awk с учётом кавычек.
Есть ли онлайн-конвертер CSV в TSV?
Да, на нашем сайте: CSV в TSV. Поддерживает файлы до 50 МБ, автоопределение диалекта.
Какие ошибки возможны при конвертации?
Потеря кавычек, появление лишних табуляций, проблема с кодировкой, разное количество столбцов. Используйте чек-лист выше.
Можно ли конвертировать CSV в TSV в Excel?
Да, откройте CSV в Excel, сохраните как «Текст с разделителями табуляции» (TSV). Но Excel может изменить кодировку или округлить числа.
Что делать, если CSV содержит переносы строк внутри полей?
Не используйте простые замены. Используйте Python или онлайн-конвертер, которые корректно обрабатывают многострочные поля.
Источники и нормативные документы
- RFC 4180 — Common Format and MIME Type for CSV Files
- IANA — Tab-Separated Values (TSV) registry
- Python csv module documentation
- Miller — command-line CSV/TSV processor