Короткий вопрос: Как автоматически определить, есть ли в CSV-файле заголовки в первой строке?
Подробности: я написал небольшой механизм синтаксического анализа CSV, который помещает данные в объект, к которому я могу получить доступ (приблизительно) в базе данных в памяти. Оригинальный код был написан для анализа стороннего CSV с предсказуемым форматом, но я бы хотел использовать этот код более широко.
Я пытаюсь найти надежный способ автоматического обнаружения присутствия заголовков CSV, чтобы скрипт мог решить, использовать ли первую строку файла CSV в качестве имен ключей / столбцов или немедленно начать анализ данных. Поскольку все, что мне нужно, это булевский тест, я мог бы легко указать аргумент после проверки самого файла CSV, но я бы предпочел не делать этого (иди к автоматизации).
Я полагаю, мне придется проанализировать первые 3? строки файла CSV и найдите шаблон некоторого вида для сравнения с заголовками. У меня кошмары из трех особенно плохих случаев, в которых:
- Заголовки по какой-то причине содержат числовые данные
- Первые несколько строк (или большие части CSV) равны нулю
- Там заголовки и данные выглядят слишком похожими, чтобы отличать их друг от друга
Если я могу получить «наилучшее предположение» и заставить парсер выйти из строя с ошибкой или выдать предупреждение, если он не может решить, это нормально. Если это что-то, что будет чрезвычайно дорогостоящим с точки зрения времени или вычислений (и займет больше времени, чем это должно спасти меня), я с радостью откажусь от этой идеи и вернусь к работе над «важными вещами».
Я работаю с PHP, но это кажется мне скорее алгоритмическим / вычислительным вопросом, чем вопросом, зависящим от реализации. Если есть простой алгоритм, который я могу использовать, отлично. Если вы можете указать мне на некоторую уместную теорию / обсуждение, это тоже было бы здорово. Если есть гигантская библиотека, которая выполняет обработку естественного языка или 300 различных видов анализа, мне это не интересно.