Русский

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

RFC 4180 Объяснение: максимальное соответствие CSV официальному стандарту

· Фон

csv rfc-4180 форматы данных

Записи CSV с разделителями-запятыми, окончаниями CRLF и двойными кавычками выровнены в единый вывод.
Оригинальная векторная иллюстрация ToolAcre

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

Два «действительных» файла CSV, которые ни один парсер не читает правильно — почему формат десятилетиями рос без стандарта

Два файла могут иметь расширение .csv, в одном используются точки с запятой, в другом — табуляция, и каждый из них применяет кавычки по-разному. Парсер должен знать диалект, прежде чем пунктуация станет структурой. ToolAcre начинается с четырех кандидатов и оценивает проанализированные формы выборки, а не доверяет расширению.

Эта гибкость объясняет, почему «действительный CSV» часто является неполным описанием. Очиститель может принять типичные отклонения и затем сериализовать согласованный результат. Его поведение определяется конфигурацией и тестами, что дает более полезный контракт, чем если бы каждый производитель четко следовал одному меморандуму.

Что такое RFC 4180 — информационная записка от 2005, документирующая общепринятую практику, а не обязательный стандарт.

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

Если история внешних стандартов имеет значение, цитируйте основную публикацию отдельно. Для использования ToolAcre соответствующее свидетельство является локальным: код по умолчанию имеет значение CRLF, заключает в кавычки структурные символы, удваивает внутренние кавычки и сообщает о строке, ширина которой отличается от заголовка.

Свидетельства репозитория используют RFC 4180 в качестве целевого соглашения; история публикаций находится за пределами исходного набора

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

Рваный ввод не вызывает отторжения. Короткие строки заполняются пустыми ячейками; длинные строки содержат дополнительные элементы, и оба получают предупреждения с номерами строк. Сериализатор записывает каждую сохраненную строку, поэтому «чистый вывод» не означает, что программа догадалась, как исправить структурные разногласия.

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

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

Переключатель «Кавычка для каждого поля» запрашивает единый стиль; в противном случае вывод цитируется минимально. Избыточные цитаты источника могут исчезнуть, а анализируемые значения останутся равными. Такая нормализация является ожидаемой, и именно поэтому тесты сравнивают восстановленную таблицу, а также точные выходные данные для выбранных примеров.

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

Файл на диск редко приходит с прикрепленными параметрами типа носителя. ToolAcre не считывает параметр `header` или `charset` из выбранного файла. Он опирается на свой контракт маршрута: текст UTF-8, заголовок первой строки и поддерживаемое обнаружение разделителя или выбор вручную.

Необязательный переключатель экспорта BOM записывает U+FEFF перед первым заголовком. Это может помочь электронной таблице распознать UTF-8, но конфигурация предупреждает, что это может нарушить строгий импорт сценария или базы данных, поскольку маркер присоединяется к имени, если его не удалить. Оставьте это, если этого не требует потребитель.

Где мир расходится — точки с запятой, окончания строк LF, неровные строки и неразмеченные кодировки, и почему памятка ничего из этого не терпит

В реальном вводе могут использоваться точка с запятой, табуляция или вертикальная черта, LF или одиночный CR, нечетные строки и ведущий UTF-8 BOM. Анализатор намеренно принимает все эти окончания строк и кандидатов на разделители. Не «терпит» рваные ряды молча; он сохраняет данные и прикрепляет предупреждение.

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

ToolAcre принимает несколько реальных отклонений, сообщая о неровных строках, вместо того, чтобы отклонять их.

Ни одно правило здесь не присваивает ячейкам числовые, логические или нулевые типы. Анализатор возвращает строки, а преобразователь JSON сохраняет их как строки. Отправитель и получатель должны согласовать семантические соглашения, в том числе о том, отсутствует ли пустой текст и является ли последовательность цифр идентификатором.

Безопасность внедрения формул — это политика экспорта, основанная на синтаксисе CSV. Если этот параметр включен, рискованные ведущие символы получают апостроф, за исключением обычных числовых форм. Это намеренно меняет значения безопасности электронных таблиц; это не часть экранирования кавычек или общей системы типов.

Стремитесь к выводу в стиле RFC, даже если входные данные игнорируют его — как средство очистки ToolAcre CSV восстанавливает файлы для обеспечения согласованного разделения и кавычек

Стремитесь к предсказуемому результату, даже если диалект источника различается. После анализа и разрешения предупреждений ToolAcre выдает записи CRLF и стандартное экранирование в двойных кавычках. Если обнаруженный разделитель остается точкой с запятой или табуляцией, при загрузке сохраняется этот разделитель, а не всегда ставится запятая.

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