CSV Formatter

Форматируйте и нормализуйте данные CSV с настраиваемыми параметрами разделителей

Попробовать пример

Входные данные CSV

Отформатированный CSV

Работает локально · Безопасно вставлять секреты
Отформатированный CSV появится здесь…
Разделитель вывода:

Что такое форматирование CSV?

Форматирование CSV (Comma-Separated Values) — это процесс нормализации необработанного табличного текста, при котором разделители, кавычки, пробелы и символы конца строки приводятся к единому набору правил. RFC 4180, опубликованный в 2005 году, определяет наиболее широко используемый стандарт CSV: поля разделяются запятыми, записи завершаются CRLF, а любое поле, содержащее запятую, двойную кавычку или перенос строки, заключается в двойные кавычки. CSV-форматтер берёт неправильные или непоследовательные данные CSV и переписывает их в соответствии с этими соглашениями.

Реальные CSV-файлы редко приходят в чистом виде. Экспорт из Excel, Google Sheets и утилит для дампа баз данных использует разные стратегии заключения в кавычки, по-разному обрабатывает пробелы и может использовать точки с запятой или символы табуляции вместо запятых. Когда такие файлы подаются на вход парсеру, ожидающему строгий формат RFC 4180, результатом часто становятся сломанные строки, смещённые столбцы или незаметная потеря данных. Форматирование перед обработкой позволяет выявить эти проблемы на раннем этапе.

CSV-форматтер отличается от CSV-конвертера. Форматирование оставляет данные в формате CSV: нормализует кавычки, удаляет лишние пробелы, выравнивает столбцы и при необходимости меняет разделитель. Конвертация полностью изменяет формат, создавая вывод в JSON, HTML, SQL или Markdown.

Зачем использовать этот CSV Formatter?

Инструмент выполняет парсинг и повторную сериализацию вашего CSV полностью в браузере. Ваши данные никогда не покидают вашу машину.

Мгновенное форматирование
Вставьте CSV и сразу увидите очищенный результат. Форматтер выполняет парсинг и повторную сериализацию в браузере по мере ввода.
🔒
Обработка с приоритетом конфиденциальности
Весь парсинг и форматирование происходят во вкладке браузера. Никакие данные не передаются по сети. Безопасно для коммерческих наборов данных, учётных данных и персональной информации (PII), которая не должна покидать вашу машину.
🔧
Настраиваемые разделители
Переключайтесь между запятой, табуляцией, точкой с запятой и символом «|» в качестве разделителей. Инструмент автоматически определяет разделитель входных данных и позволяет выбрать другой для вывода, что упрощает нормализацию между форматами.
📋
Копирование и скачивание в один клик
Скопируйте отформатированный CSV в буфер обмена или скачайте его как файл. Готово к импорту в базы данных, таблицы или конвейеры обработки данных без дополнительного редактирования.

Сценарии использования CSV Formatter

Фронтенд-разработка
Очистите CSV-файлы с тестовыми данными, используемыми как моковые данные в компонентах React или Vue. Последовательное заключение в кавычки предотвращает сбои парсинга во время сборки для разработки.
Приём данных на бэкенде
Нормализуйте CSV-экспорт из сторонних API перед подачей в ETL-конвейер. Удаление пробелов и стандартизация разделителей предотвращают ошибки смещения столбцов.
DevOps и CI/CD
Форматируйте CSV-файлы конфигурации или начальные данные, хранящиеся в системе контроля версий. Единообразное форматирование уменьшает шум в дифференциальных сравнениях и ускоряет проверку кода.
QA и тестирование
Подготовьте CSV-фикстуры с заданными шаблонами заключения в кавычки и разделителей. Воспроизводимые входные файлы упрощают написание проверок для вывода парсера.
Инженерия данных
Предварительно обрабатывайте CSV-дампы из устаревших баз данных перед загрузкой в современные хранилища данных. Устранение проблем с кавычками и несоответствий разделителей экономит часы отладки.
Обучение и образование
Экспериментируйте с правилами заключения в кавычки RFC 4180, вставляя разные входные данные и наблюдая, как форматтер их нормализует. Практический способ разобраться в граничных случаях CSV.

Правила кавычек и экранирования в CSV (RFC 4180)

RFC 4180 определяет конкретные правила того, когда и как поля должны заключаться в кавычки. Шесть приведённых ниже сценариев охватывают случаи, когда поведение кавычек имеет значение.

СценарийПримерПравило
Field contains delimitername,"Smith, Jr."Wrap in double quotes
Field contains newline"line1\nline2"Wrap in double quotes
Field contains double quote"She said ""hello"""Double the quote character
Field is empty,,Two consecutive delimiters
Field has leading spaces" value"Quotes preserve whitespace
Field is numeric42No quotes required unless forced

Сравнение разделителей CSV

Выбор разделителя влияет на совместимость, читаемость и то, как часто потребуется заключать поля в кавычки.

Запятая (,)
Стандартный разделитель по RFC 4180. Поддерживается каждым парсером CSV и каждой таблицей. Требует заключения в кавычки, когда значения полей содержат запятые, что часто встречается в адресных и текстовых данных.
Табуляция (\t)
Используется в файлах TSV (Tab-Separated Values). Символы табуляции редко встречаются в данных полей, поэтому кавычки почти не нужны. Распространён в биоинформатике и экспорте баз данных.
Точка с запятой (;)
Стандарт в CSV-экспорте для европейских локалей (Германия, Франция, Бразилия), где запятая используется как десятичный разделитель. Excel использует точки с запятой, когда системная локаль применяет запятую для десятичных чисел.
Вертикальная черта (|)
Редко встречается в обычном тексте, что делает её хорошим выбором для неструктурированных данных, в значениях полей которых есть запятые и точки с запятой. Распространён в экспорте мейнфреймов и устаревших систем.

Примеры кода

Эти примеры показывают, как разобрать неправильный CSV и выполнить его повторную сериализацию с единообразным форматированием на разных языках программирования. Каждый фрагмент кода обрабатывает удаление пробелов, нормализацию разделителей и заключение в кавычки.

JavaScript (Node.js)
import { parse, unparse } from 'papaparse'

const messy = `name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo "`

// Parse with trimming, then re-serialize with consistent formatting
const parsed = parse(messy, {
  header: true,
  skipEmptyLines: true,
  transformHeader: h => h.trim(),
  transform: v => v.trim(),
})

const clean = unparse(parsed.data, { quotes: true })
console.log(clean)
// → "name","age","city"
// → "Alice","30","Berlin"
// → "Bob","25","Tokyo"
Python
import csv
import io

messy = """name, age ,city
Alice , 30, Berlin
Bob,25 , " Tokyo " """

reader = csv.DictReader(io.StringIO(messy), skipinitialspace=True)
output = io.StringIO()
writer = csv.DictWriter(
    output,
    fieldnames=[f.strip() for f in reader.fieldnames],
    quoting=csv.QUOTE_ALL,
)
writer.writeheader()
for row in reader:
    writer.writerow({k.strip(): v.strip() for k, v in row.items()})

print(output.getvalue())
# → "name","age","city"
# → "Alice","30","Berlin"
# → "Bob","25","Tokyo"
Go
package main

import (
	"encoding/csv"
	"fmt"
	"strings"
)

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()

	var buf strings.Builder
	w := csv.NewWriter(&buf)
	w.UseCRLF = true // RFC 4180 line endings
	for _, record := range records {
		_ = w.Write(record)
	}
	w.Flush()
	fmt.Print(buf.String())
	// → name,age,city\r\n
	// → Alice,30,Berlin\r\n
	// → Bob,25,Tokyo\r\n
}
CLI (csvformat from csvkit)
# Re-format a CSV file with csvkit (Python-based)
csvformat -D ";" input.csv > output.csv

# Convert tabs to commas
csvformat -t input.tsv > output.csv

# Force-quote all fields
csvformat -U 1 input.csv > quoted.csv

# Using Miller (mlr) to normalize
mlr --icsv --ocsv --quote-all cat input.csv > clean.csv

Часто задаваемые вопросы

Что делает CSV-форматтер?
CSV-форматтер разбирает необработанный текст CSV, нормализует кавычки вокруг полей, удаляет лишние пробелы и выполняет повторную сериализацию данных с единообразным разделителем и стилем окончания строк. На выходе получается чистый CSV-файл, соответствующий RFC 4180 или выбранным вами правилам форматирования.
Чем форматирование CSV отличается от валидации CSV?
Валидация проверяет, соответствует ли CSV-файл набору правил, и сообщает об ошибках. Форматирование идёт дальше: оно переписывает файл, исправляя эти проблемы. Валидатор сообщает, что в строке 5 есть незаключённая запятая. Форматтер исправляет это, добавляя кавычки вокруг поля.
Зачем форматировать CSV-файлы перед импортом?
Инструменты импорта баз данных, ETL-конвейеры и табличные программы используют немного разные правила парсинга CSV. Незаключённое поле с запятой будет разделено на два столбца строгими парсерами. Форматирование CSV в соответствии с RFC 4180 перед импортом предотвращает ошибки смещения столбцов и незаметное повреждение данных.
Передаются ли мои данные на сервер при использовании этого инструмента?
Нет. Весь парсинг и форматирование происходят в вашем браузере с использованием JavaScript. Ваши данные CSV остаются на вашей машине и никогда не передаются по сети. Вы можете убедиться в этом, открыв вкладку «Сеть» в инструментах разработчика браузера во время работы с инструментом.
Можно ли изменить разделитель при форматировании?
Да. Инструмент автоматически определяет разделитель входных данных (запятая, табуляция, точка с запятой или вертикальная черта) и позволяет выбрать другой разделитель для вывода. Это удобно при конвертации между региональными форматами CSV или при переходе с TSV на стандартный CSV.
Как инструмент обрабатывает заключённые в кавычки поля со встроенными переносами строк?
Согласно RFC 4180, поля, содержащие переносы строк, должны быть заключены в двойные кавычки. Форматтер сохраняет эти встроенные переносы строк и обеспечивает наличие окружающих кавычек. Если поле имеет незаключённый перенос строки во входных данных, форматтер оборачивает его в кавычки при повторной сериализации.
Каков максимальный размер файла, с которым справляется этот инструмент?
Поскольку инструмент работает в браузере, практический предел зависит от объёма доступной памяти устройства. Файлы размером до 10–20 МБ, как правило, обрабатываются без проблем на современных машинах. Для файлов большего размера лучше подойдёт инструмент командной строки, например csvkit или Miller.