Как программно предположить, является ли файл CSV запятой или разграниченной точкой с запятой

В большинстве случаев файлы CSV являются текстовыми файлами с записями, разграниченными запятыми. Однако иногда эти файлы будут прибывать разграниченная точка с запятой. (Excel будет использовать разделители точки с запятой при сохранении CSVs, если региональным настройкам установят десятичный разделитель как запятую - это распространено в Европе. Касательно: http://en.wikipedia.org/wiki/Comma-separated_values#Application_support)

Мой вопрос, что лучший способ состоит в том, чтобы иметь предположение программы, иметь ли его запятая или разделенная точка с запятой?

например, строка как 1,1; 1,1 может быть неоднозначным. Это могла быть интерпретируемая запятая, разграниченная как: 1 1; 1 (строка) 1

или точка с запятой, разграниченная как 1,1 1,1

Мое лучшее думаю так далеко должно попытаться анализировать файл и с, и; разделители, затем выберите синтаксический анализ, который имеет большинство строк той же длины как первая строка (обычно строка заголовка). Если оба имеют то же количество строк, выбирают ту с большим количеством столбцов. Основной недостаток этого является дополнительными издержками.

Мысли?

12
задан Polemarch 7 May 2010 в 15:42
поделиться

2 ответа

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

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

1
ответ дан 2 December 2019 в 23:50
поделиться

Если в каждой строке должно быть одинаковое количество столбцов, как я полагаю, в случае с Excel, тогда, используя запятые и точки с запятой, вычислить количество столбцов для строк N и N + 1. Какой бы метод (запятые или точки с запятой) ни давал другой ответ, неверен (не формат файла). Вы можете начать с самого начала, и вам нужно будет идти только до тех пор, пока один из них не окажется неверным. Вам не нужны строки заголовка или что-то в этом роде. Вам не нужно читать больше файла, чем необходимо, и он никогда не сможет дать вам неправильный ответ для формата файла, он просто может достигнуть конца и еще не прийти к выводу. Все, что вам нужно, это чтобы каждая строка содержала одинаковое количество столбцов.

1
ответ дан 2 December 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: