Мы получаем файлы в различных форматах — CSV, TSV или другие плоские файлы, использующие более экзотические разделители (|, ; и т. д.). В этих файлах также могут использоваться текстовые квалификаторы, опять же в различных форматах (каждое поле квалифицировано против только тех, которые содержат квалифицированный разделитель, используются разные символы ', " и т. д.).
Я написал инструмент, который может успешно идентифицировать разделители в файле, используя метод частотного анализа, мало чем отличающийся от класса сниффера Python, упомянутого здесь: Как определить, какой разделитель используется в текстовом файле?
Сейчас я пытаюсь расширить инструмент для поддержки текстовых файлов. Трудность здесь заключается в том, что частотного анализа недостаточно для определения текстовых квалификаторов, так как многие формы CSV будут только оборачивать поля, содержащие разделитель, текстовыми квалификаторами, поэтому, например, файл с 10 000 строк может иметь только 2 вхождения текстового квалификатора в целом. файл.
Мой текущий подход состоит в том, чтобы сканировать файл в поисках пар квалификаторов разделителя и текста (например, 'и ',), а затем сравнивать их с другими потенциальными парами (например, ," и ",) и выбирать наиболее часто встречающиеся.
Может ли кто-нибудь предложить более надежную альтернативу? Ключевым ограничением проблемы является то, что я должен поддерживать файлы в любом из множества различных вариантов CSV, которые могут быть созданы. Моя цель — поддерживать как можно больше случаев без вмешательства пользователя.