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