2013-04-01 2 views
0

Привет, У меня возникла проблема в анализе CSV-файла. CSV-файл разделен на | персонаж . Все идет нормально. Но только одно поле заключен с "полукокса. НапримерParsing Mixedt CSV-файл с TextFieldParser

field1|field2|"field3"|field4 

Когда я поставил HasFieldsEnclosedInQuotes

к истинно, я стану исключением иначе парсинг CSV-файл идет не так. Не могли бы вы помочь мне здесь.

+0

см. Мой ответ, проверенный код для ввода, работает как ожидается –

ответ

-2

Быстро и грязно: вы можете рассмотреть возможность снятия документа всех видов использования «заранее».

string path = "c:\\test.txt"; 
string s = System.IO.File.ReadAllText(path, System.Text.Encoding.Default); 
s = s.Replace("\"", string.Empty); 
System.IO.File.WriteAllText(path, s, System.Text.Encoding.Default); 

Edit 1: Этот метод работает для числовых столбцов или строк столбцов, содержащих только одно слово, но может нарушить структуру Csv в других случаях (например, поле хранит HTML контента) - быть в курсе возможных побочных эффектов.

+0

Не решение. В поле 3 есть HTML-код, который включает в себя « – user332070

+0

WAT?» Вы уверены, что знаете о роли котировок в CSV? –

+0

@ taras.roshko: да Я. Я согласен - не подходит для содержимого html. Я думаю, что голосование не справедливо.Этот простой метод был достаточным для меня несколько раз. – HikeMike

0

Я не видел культуры, где '|' является CSV разделитель ...

В общем,

var line = "field1|field2|\"field3\"|field4"; 
var pattern = string.Format("{0}(?=([^\"]*\"[^\"]*\")*[^\"]*$)", Regex.Escape("|")); 
//{0} in pattern is CSV separator. To get current use System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator 
var splitted = Regex.Split(line, pattern, RegexOptions.Compiled | RegexOptions.ExplicitCapture); 

foreach (var s in splitted) 
    Console.WriteLine(s); 

Выход:

field1 
field2 
"field3" 
field4 

шаблон предназначен для разделения единой строки из файла CSV с использованием указанных символов разделителей. Включает обработку котировок и т. Д. Надеюсь, что это поможет.

Смежные вопросы