В Python в модуле csv есть класс Sniffer, который можно использовать для угадывания данного разделителя файла и символов кавычек. Его стратегия (цитируется из строки документации csv.py):
[Сначала посмотрите] текст, заключенный между двумя одинаковыми кавычками
(вероятный цитата), которые предшествуют и следуют
одним и тем же символом (вероятный разделитель).
Например:
,'some text',
Цитата с наибольшим количеством выигрышей, также как и с разделителем.
Если кавычка нет, разделитель не может быть определен
вот так.
В этом случае попробуйте следующее:
Разделитель должен встречаться столько же раз
каждый ряд. Однако из-за искаженных данных это может и не произойти. Мы не хотим
подход «все или ничего», поэтому мы допускаем небольшие изменения в этом
число.
- построить таблицу частоты
каждый символ в каждой строке.
- построить таблицу частот этого
частота (мета-частота?), например
х произошел 5 раз в 10 строках, 6
раз в 1000 строк, 7 раз в 2
строки
- использовать режим мета-частоты
определить ожидаемый
частота для этого символа
- узнать, как часто персонаж
на самом деле отвечает этой цели
- персонаж, который лучше всего соответствует его
цель - разделитель
По соображениям производительности данные оцениваются порциями, поэтому они могут
попытаться оценить наименьшую часть возможных данных, оценивая
дополнительные куски по мере необходимости.
Я не собираюсь здесь цитировать исходный код - он находится в каталоге Lib каждой установки Python.
Помните, что CSV также может использовать точки с запятой вместо запятых в качестве разделителей (например, в немецких версиях Excel, CSV разделены точкой с запятой, поскольку запятые используются в качестве десятичных разделителей в Германии ...)