Анализ экранированных смешанных кавычек в файле csvC#

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

Сообщение Anonymous »

У меня возникла проблема с обработкой некоторых данных из CSV-файла с помощью пакета CsvHelper v33 в веб-приложении ASP.NET Core 6. Некоторые примеры, которые я пытался реализовать, были из «Обработка проблемы с двойными кавычками» и «Как обрабатывать двойные кавычки внутри данных». Я пробовал предварительно обработать строку перед использованием CsvReader и различных комбинаций параметров конфигурации. Кажется, я не могу осмыслить эту проблему. Есть ли у кого-нибудь еще понимание, почему я не могу решить эту проблему?
Необработанная запись файла:
name, street, city
foo, "\DLS\"" NO. 5"," 10TH AVENUE""", barr

CSV анализируется в необработанном виде
name, street, city
foo, \"\\DLS\\\"\" NO. 5\",\" 10TH AVENUE\"\"\", barr

Результат: MyModel.cs (визуализатор текста)
name: foo string
street: "\\DLS\\\" NO. 5" string
city: 10TH AVENUE" string

Ожидается MyModel.cs
name: foo string
street: \DORELS\\\" NO. 5 10TH AVENUE\" string
city: bar string

Код:
var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = hasHeader,
Delimiter = ",",
IgnoreBlankLines = true,
BadDataFound = null,
//BadDataFound = ctx => badRecords.Add(ctx.RawRecord),
ShouldSkipRecord = args => args.Row.Parser.Record?.All(field => string.IsNullOrWhiteSpace(field) || field == "\u001a") ?? false,
TrimOptions = CsvHelper.Configuration.TrimOptions.Trim,
//Mode = CsvHelper.CsvMode.RFC4180,
//Mode = CsvHelper.CsvMode.Escape,
//Escape = '\\',
};

var list = new List();

using (var reader = new StreamReader(filename))
using (var csv = new CsvHelper.CsvReader(reader, config))
{
csv.Read();
csv.ReadHeader();

if (csv.HeaderRecord.Length == expectedHeaderCount)
{
csv.Context.RegisterClassMap();

//csv.Context.TypeConverterCache.AddConverter(new RemoveQuotesStringConverter());

while (await csv.ReadAsync())
{
var record = csv.GetRecord();

if (record != null)
{
list.Add(record);
}
}
}

return (list.Count > 0, list);
}


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

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

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

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

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

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

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