Я пытаюсь найти жизнеспособный способ проанализировать этот файл CSV. В настоящее время я использую файловые серверы, что отлично. Но с этим csv-файлом, похоже, возникают проблемы.Regex игнорировать шаблон
Каждая запись в файле csv содержится в кавычках и ограничена запятой. Записи запятые в них и одна запись из 90000 записей IM дело с еще один сингл «который гадости вверх Readline.
Запись выглядит как это„24“скучное»,
Так что я m глядя, чтобы написать регулярное выражение, чтобы вставить в BeforeReadRecord, который пройдет и заменит все экземпляры «пробелом».
Я новичок в регулярном выражении, но я не нашел способа исключить три случая. Case один: каждая строка начинается с « Случай два: каждая строка заканчивается« Дело три: каждое поле разделяется «,»
Я пытаюсь выяснить, как я мог исключить эти три случая и остался, чтобы просто заменить любого отступника ».
До сих пор я терпел неудачу и даже не уверен, есть ли способ сделать это. Возможно, кто-то знает о лучшем парсере csv, который обрабатывает и этот нечетный случай?
EDIT: Хорошо, вот что я получил. Требуется немного времени для обработки (также просто меняется любой выброс «в», что отлично, поскольку данные, содержащие кавычки, необходимы для любых запросов), но при поиске любых ловушек, которые я могу впасть, чтобы сделать это быстрее, но это казалось самое быстрое решение до сих пор (заняло около 7 секунд для 92 000 записей), но не все равно проверяется каждая строка, так что ... Мое предыдущее решение было противным вложенным, если это показалось 30 секундам или около того в ходе обработки записи учитываются для всех сценариев, за исключением тех, где кто-то решает поставить случайный », в конце поля ... надеясь, что я не попаду в такую запись, но это меня не удивит.
in its own method{
engine.BeforeReadRecord += (sender, args) =>
args.RecordLine = checkQuote(args.RecordLine);
var records = engine.ReadFile(reportFilePath);
}
private static string checkQuote(string checkString)
{
if (checkString.Substring(0, 1) == @"""")
{
string removeQuote = @"""" + checkString.Replace(@"""", "'").Replace(@"','", @""",""").Remove(checkString.Length-1,1).Remove(0,1) + @"""";
return removeQuote;
}
else
return checkString; }
, пожалуйста, покажите, что вы пробовали. –
хорошо, но это не где близко Закрыть 'FileHelperEngine engine = new FileHelperEngine (); engine.BeforeReadRecord + = (отправитель, args) => args.RecordLine = Regex.Replace (args.RecordLine, @ "(?!" "," ")" "", ""); var records = engine.ReadFile (reportFilePath); ' –
user3776809
есть все равно, чтобы исключить те, которые есть в шаблоне, хотя и только захватить ", которые не подходят в этих шаблонах? – user3776809