У меня возникла проблема с обработкой некоторых данных из 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
Анализ экранированных смешанных кавычек в файле csv ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение