Перейти к основному содержимому
CSV First Aid

Как починить битый CSV — полное руководство

CSV ломается десятками способов — искажённые символы, съехавшие колонки, фантомные пустые строки, даты, которые неправильно сортируются. Это руководство покрывает все типичные поломки, объясняет, почему это происходит, и показывает, как чинить (вручную и через CSV First Aid).

1. Искажённые символы (проблемы кодировки)

Если видите искажённые последовательности вроде é вместо читаемых символов — файл сохранили в Windows-1252 или Latin-1, а открыли как UTF-8. Это называется mojibake.

Вручную: в Python открыть с encoding='cp1252'. В Excel — через Мастер импорта текста, выбрать '65001: Unicode (UTF-8)' или '1252: Western European' в зависимости от реальной кодировки.

Автоматически: бросьте файл в CSV First Aid. Детектор кодировки находит паттерны Windows-1252 и перекодирует в чистый UTF-8.


2. Заголовок первой колонки начинается с мусора (BOM)

Если первый заголовок выглядит как id или \ufeffid — у файла UTF-8 BOM (Byte Order Mark). Это 3 невидимых байта в позиции 0, которые Excel добавил при сохранении как 'CSV UTF-8'.

Вручную: открыть в hex-редакторе и удалить байты EF BB BF. В Python: open('file.csv', encoding='utf-8-sig').

Автоматически: CSV First Aid убирает BOM на этапе чтения.


3. Данные съехали не в те колонки (битые кавычки)

Когда поле содержит запятую или перевод строки, но не заквочено — парсер разбивает его по нескольким колонкам или строкам. Одна незакрытая кавычка сдвигает каждое следующее поле.

Вручную: найти проблемное поле (ищите непарные кавычки), добавить закрывающую, экранировать внутренние удвоением ("").

Автоматически: толерантный парсер CSV First Aid восстанавливается после незакрытых кавычек и правильно перезаквочивает все поля при экспорте.


4. Всё в одной колонке (неверный разделитель)

Если данные оказались в одной колонке — файл использует разделитель, отличный от ожидаемого. Европейские экспорты часто используют точку с запятой, потому что запятая — десятичный разделитель.

Вручную: переимпортировать с правильным разделителем. В Excel: Данные → Текст по столбцам → С разделителями → выбрать правильный символ. В Pandas: pd.read_csv('file.csv', sep=';').

Автоматически: CSV First Aid определяет разделитель и даёт сконвертировать в любой стандартный формат.


5. Даты сортируются неправильно или неверно интерпретируются

Когда в колонке смешаны форматы (01/03/2024 vs 2024-03-01 vs 1 марта 2024 г.) — сортировка падает, а импорт неправильно интерпретирует даты. 01/02/2024 — это 2 января или 1 февраля?

Вручную: regex-замена или скрипт, парсящий каждый формат и выдающий ISO 8601 (ГГГГ-ММ-ДД).

Автоматически: CSV First Aid определяет смешанные паттерны дат в колонке и нормализует в ISO 8601.


6. Невидимые проблемы (пробелы, NBSP, zero-width)

Самые изматывающие баги CSV — невидимые. Конечные пробелы ломают VLOOKUP. Неразрывные пробелы (NBSP) выглядят как обычные, но не матчатся. Zero-width-символы из веб-скрейпинга молча ломают join-ы.

Вручную: в Python strip() убирает пробелы, но не NBSP. Нужен regex: re.sub(r'[\u00a0\u200b\ufeff]', '', text).

Автоматически: чистильщик невидимых символов плюс триммер пробелов в CSV First Aid обрабатывают всё это за один проход.


7. Пустые строки и висячие переводы

Лишние пустые строки раздувают счётчики, ломают импортёры, ожидающие плотные данные, и создают фантомные NULL-записи в БД.

Вручную: открыть в текстовом редакторе и удалить пустые строки. Осторожно с финальным переводом строки — он валиден по RFC 4180, но многие парсеры создают из него пустую финальную строку.

Автоматически: включить фикс 'Empty rows' в CSV First Aid.


8. Колонка 'Unnamed: 0' (утечка индекса Pandas)

Если видите числовой индекс как первую колонку с заголовком 'Unnamed: 0' — файл создан через df.to_csv() без index=False.

Вручную: pd.read_csv('file.csv', index_col=0) или удалить первую колонку.

Автоматически: CSV First Aid находит и убирает колонку последовательных целых.

Не хочется чинить вручную? Бросьте файл в CSV First Aid — те же проверки запускаются автоматически.

Почините CSV сейчас →

Похожие инструменты