Как разобрать файл CSV, в котором первый символ каждой строки является запятой? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть AC # CSV parser, который работал очень хорошо в течение нескольких месяцев.Он использует FileHelpers.CsvEngine для выполнения тяжелой работы.Моя система должна получать сторонние CSV-файлы как есть (очень трудно вернуться к поставщикам и сказать «измени их»).После нескольких месяцев успешного анализа CSV я столкнулся с несколькими большими файлами, в которых каждая строка начинается с запятой.И CSV действительно использует значения, разделенные запятыми (не символы табуляции, пробелы и т. Д.).

Вот строка, которая взрывается:

DataTable dt = CsvEngine.CsvToDataTable(@"c:\somefile.csv", ',');

А вот ошибка:

Строка '' not является допустимым идентификатором .NET

Вот несколько примеров строк из CSV (первая строка - заголовок):

,ORG_NO,ORG_REV_NO,ZMODEL,Q_DATE
,7,1,02-8FD10            ,7/21/2009 9:33
,7,1,02-8FD14            ,7/21/2009 9:33
,7,1,02-8FD15            ,7/21/2009 9:33
,7,1,02-8FD18            ,7/21/2009 9:33

Заметьте, что первый символ каждой строки - запятая, и это, похоже, душит парсер.

В качестве последнего средства я могу зациклить файл, удалить первый символ и затем приступить к анализу - но есть ли более элегантный / простой способ справиться с этим?Я хотел бы подход, который просто обрабатывает его, вместо того, чтобы заглядывать в каждый CSV перед его разбором, посмотреть, является ли первый символ запятой, а затем выбрать альтернативный (и дорогой) путь к коду удаления запятой, если так.

Есть идеи?

...