Анализ CSV-файла с непоследовательными кавычкамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Анализ CSV-файла с непоследовательными кавычками

Сообщение Anonymous »

Я пытаюсь проанализировать файл CSV с помощью csvHelper, но я готов использовать другие инструменты. Мне трудно правильно цитировать
Пример записи выглядит так (это не факт, и я надеюсь, что у меня есть все столбцы в ряд):

Код: Выделить всё

Number,Name,Description,ColX,ColY,ColZ,UOM,Size,Color,URL
361920,END CAP 97" SLT GRY,"This is a quoted field with commas, Not all Rows are quoted
",Products,SomeData,97" Cap,PC,,,https://url.jpg,C-453

Я пробовал использовать разные варианты с помощью помощника CSV. Если я отключу экранирование, все поля будут смещены из-за строки в кавычках.
Но когда я оставлю экранирование включенным, я получаю исключение BadDataException.
Пример кода с использованием CsvHelper

Код: Выделить всё

var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture)
{

};

using (var reader = new StreamReader(path))
using (var csv = new CsvReader(reader, config))
{

while (csv.Read())
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine(csv.GetField(i));
}
}
}
Я пробовал CSVMode.NoEscape, но в результате запятые в экранированной строке обрабатываются как новые столбцы.
Я также обнаружил случаи, когда Поле в кавычках содержит неэкранированные кавычки, поэтому одно поле может выглядеть так:

Код: Выделить всё

"SomeDesc,"Still Same" Field
"
Мне бы не хотелось писать собственный синтаксический анализатор CSV. Я также не владею данными, поэтому не могу исправить исходные данные.
Пока лучшее, что я нашел, — это открыть каждый файл (сотни из них в Excel и пересохраните их как CSV, похоже, справится с этим, а затем сохранит в хорошем формате

Подробнее здесь: https://stackoverflow.com/questions/790 ... nt-quoting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»