使用TextFieldParser解析CSV文件 - MalformedLineException

时间:2018-02-17 06:21:09

标签: c# .net vb.net csv parsing

我有以下CSV文件内容:

4.1,AB,2018-02-16 15:41:39,152,36,"{"A":{"a1":"A1"},"B":{"b1":"B1}}","{"X":"","Y":"ya"}",20

我想打破/解析它如下 - 逗号是列分隔符,但列也可以有双引号。

  • 4.1
  • AB
  • 2018-02-16 15:41:39
  • 152
  • 36
  • “{” A “:{” A1 “:” A1 “},” B “:{” B1 “:” B1}}“
  • “{” X “:” “ ”Y“: ”亚“}”
  • 20

这就是我正在做的事情

using ( var parser = new TextFieldParser( myCSV ) )
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters( "," );
    parser.TrimWhiteSpace = true;
    //parser.HasFieldsEnclosedInQuotes = true; 
    // I tried HasFieldsEnclosedInQuotes with true and false.

    string[] fields = new string[] { };

    while ( !parser.EndOfData )
        {
                try
                {
                fields = parser.ReadFields();
                }
                catch ( MalformedLineException e)
                {
                   LogError( $"MalformedLineException when parsing CSV" );
                }
        //
        //do something of fields...
    }
}

我一直收到MalformedLineException。 ESCAPE中包含DOUBLE QUOTES的列的正确方法是什么,以便CSV解析器不会破坏它们?

谢谢你

1 个答案:

答案 0 :(得分:0)

尝试删除     parser.TextFieldType = FieldType.Delimited;

因为在设置分隔符时会自动设置