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-форматувальник?

Цей інструмент парсить і повторно серіалізує ваш CSV безпосередньо у браузері. Ваші дані ніколи не залишають ваш пристрій.

Миттєве форматування
Вставте CSV і відразу побачте очищений результат. Форматувальник парсить і повторно серіалізує у браузері в міру введення.
🔒
Обробка з пріоритетом конфіденційності
Увесь парсинг і форматування відбуваються у вкладці браузера. Жодні дані не передаються по мережі. Безпечно для власних наборів даних, облікових даних і персональних даних, які не повинні залишати ваш пристрій.
🔧
Налаштовувані роздільники
Переключайтесь між роздільниками: кома, табуляція, крапка з комою та вертикальна риска. Інструмент автоматично визначає вхідний роздільник і дозволяє обрати інший для виводу, спрощуючи нормалізацію між різними форматами.
📋
Копіювання та завантаження одним кліком
Скопіюйте відформатований CSV до буфера обміну або завантажте як файл. Готово для імпорту в бази даних, таблиці або конвеєри обробки даних без додаткового редагування.

Сценарії використання CSV-форматувальника

Розробка фронтенду
Очищуйте CSV-файли фікстур, що використовуються як тестові дані у компонентах React або Vue. Послідовне цитування запобігає помилкам парсингу під час збірки.
Обробка даних на бекенді
Нормалізуйте CSV-експорти сторонніх API перед їх передачею у ваш ETL-конвеєр. Видалення зайвих пробілів і стандартизація роздільників запобігають помилкам зсуву стовпців.
DevOps та CI/CD
Форматуйте CSV-файли конфігурацій або початкових даних, що зберігаються у системі контролю версій. Послідовне форматування зменшує зайвий шум у diff-порівняннях і пришвидшує перевірку коду.
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.