Русский

Данные и таблицы · CSV Очиститель

Как работает CSV Обнаружение разделителей: запятые, точки с запятой, символы табуляции и трубы

· Как это работает

csv очистка данных форматы файлов

Строка, разделенная точкой с запятой, превращается в три правильно разделенных столбца таблицы.
Оригинальная векторная иллюстрация ToolAcre

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

Файл, который открывается как один длинный столбец — почему разделитель не сохраняется нигде в CSV

Аналитик данных открывает экспортированный файл .csv и видит по одному длинному полю в каждой строке. Расширение не сообщает читателю, какой разделитель использовался, и файл обычно не содержит объявления разделителя. Приложение, использующее запятые, будет читать заголовок, разделенный точкой с запятой, например имя; город; примечания, как один столбец. Прежде чем изменять значения, спросите, какой символ на самом деле разделяет поля и есть ли у импортера способ изменить его предположение.

Четыре поддерживаемых кандидата: запятая, точка с запятой, табуляция и черта.

ToolAcre рассматривает в качестве кандидатов запятую, точку с запятой, табуляцию и вертикальную черту. Точка с запятой обычно используется, когда запятые уже используются в качестве десятичных разделителей, табуляция позволяет избежать конфликтов пунктуации при простом экспорте, а каналы иногда разделяют дампы журнала или базы данных. Пробел не входит в число автоматически выбираемых инструментов: имена и ячейки с произвольным текстом часто содержат пробелы. Не добавляйте кандидата только потому, что он часто встречается в образце текста; разделитель должен разделять строки на согласованные поля.

Как работает анализ — подсчет символов-кандидатов в строке и предпочтение того, который обеспечивает единообразное количество полей во всех строках

Реализация удаляет ведущий знак порядка байтов UTF-8 и анализирует выборку длиной до десяти строк с каждым кандидатом. Он записывает ширину этих строк и отклоняет любого кандидата, который никогда не дает хотя бы два столбца. Кандидат получает более высокие баллы, если он последовательно создает больше столбцов в строках; непостоянная ширина наказывается дважды в счете. Важно отметить, что при синтаксическом анализе учитываются поля в кавычках, поэтому запятая внутри адреса в кавычках не считается границей поля. Это отличается от простого подсчета символов, и именно поэтому беспорядочный столбец адреса не обязательно препятствует обнаружению.

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

Никакая догадка не является безошибочной. В очень коротком файле мало доказательств, в действительно одном столбце CSV нет кандидатов, которые разделяются на два, а неправильное цитирование может привести к тому, что анализ нескольких кандидатов будет выглядеть неровным. Столбец произвольного текста, заполненный разделителями, может конкурировать с реальным разделителем при нарушении кавычек. Смешанные разделители между строками — это не один чистый диалект CSV. Инструмент сообщает о предупреждениях синтаксического анализа и предоставляет возможность выбора разделителя вручную; пользователь, который знает исходное соглашение об экспорте, может отменить предполагаемый выбор, а не притворяться, что эвристика является спецификацией.

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

Попробуйте небольшой образец с названием заголовка;город;примечание и строкой Ада;Париж;"Встреча в 10, возле станции". Подсчет необработанных запятых может ошибочно отдавать предпочтение запятой, поскольку примечание содержит знаки препинания, особенно в нескольких таких строках. Анализатор точки с запятой возвращает три поля в обеих строках; анализатор запятых не обеспечивает такую ​​же прямоугольную структуру. Перед обрезкой, дедупликацией или экспортом убедитесь, что в предварительном просмотре имя, город и примечание отображаются в виде отдельных столбцов. Если в одной исходной строке есть незакрытая кавычка, проверьте эту строку, а не молча отбрасывайте ее, чтобы улучшить оценку.

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

Входной разделитель и выходной разделитель — это разные решения. Вы можете импортировать европейский файл с точкой с запятой, но экспортировать текст, разделенный запятыми, в стиле RFC для программы, которая ожидает запятые. Правильный писатель цитирует поля, содержащие выходной разделитель, встроенные кавычки или разрывы строк. Решите, нужен ли получателю UTF-8 BOM перед загрузкой; некоторые приложения для работы с электронными таблицами используют его для распознавания кодировки, в то время как многим анализаторам нужен файл без нее. Проверьте загруженный заголовок в целевой программе, а не только предварительный просмотр в браузере.

Чего это не касается: файлы, в которых разделители между строками смешаны, а также экспорт фиксированной ширины, в котором разделитель вообще не используется.

Функция обнаружения не может восстановить файл, в котором разделитель меняется в середине, а также не может вывести столбцы при экспорте фиксированной ширины, где нет разделителя. Он не знает, была ли запятая в кавычках задумана как часть адреса или это ошибка при вводе данных: она следует синтаксису, а не значению. Средство очистки CSV обнаружит неровные строки и сохранит их значения, а не будет гадать, как удалить данные клиента. Используйте предварительный просмотр и предупреждения для диагностики проблем исходной системы перед выполнением необратимых действий по очистке.

Сделайте разделитель явным, а не надейтесь - как ToolAcre CSV восстановление разделителя Cleaner создает файл с одним согласованным разделителем

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