如何让Lumenworks CsvReader正确解析来自CSV文件的未转义双引号和逗号的数据

时间:2016-09-12 22:34:43

标签: c# csv parsing escaping lumenworks

我正在尝试使用Lumenworks CsvReader解析CSV文件。每个数据点都用双引号括起来,但是,某些值在数据中包含未转义的双引号,而其他值在数据中包含逗号我面临的问题是,当我使用CsvReader解析它时,由于Lumenworks将这些字符视为分隔符,因此额外的列会在我的文件中结束。

正如您将在下面阅读的那样,我使用已知解决方案处理了未转义双引号的问题,但这会导致使用逗号为数据生成额外列的问题里面。

示例:2列(每个用引号括起来),其中一个数据点中没有未加引号的双引号

“名称”, “描述”

“鲍勃”,“我是一个”酷“的家伙”

尝试执行csvReader.ReadNextRecord()时,不是将其拆分为2列,而是将其拆分为4列:

  • 鲍勃
  • 我是
  • 凉爽

我使用了Reading csv having double quotes with lumenwork csv reader中提供的解决方案并且效果很好!

这就是我实现它的方式:

Char quotingCharacter = '\0' ;
Char escapeCharacter = quotingCharacter;
Char delimiter = ',';
using (CsvReader csvReader = new CsvReader(reader, false, delimiter, quotingCharacter, escapeCharacter, quotingCharacter, ValueTrimmingOptions.All))
{....
csvReader.ReadNextRecord();
...}

但是,当我为我的CSV文件实施此修补程序时,它会在内部包含逗号的列中产生相同的问题:

示例:在实现双引号解决方法之后,有2列(每个用引号括起来),其中一个数据点中有逗号

“名称”, “描述”

“Bob”,“我与Suzie,Betty和Tommy有关”

实现上述解决方案后,csvReader现在不知道将逗号作为数据的一部分读取。而不是2列,我留下了4列:

  • 鲍勃
  • 我与Suzie有关
  • 贝蒂
  • 和汤米

所以问题是:如何让Lumenworks CsvReader解决这些不良数据,并将未转义的双引号解释为数据本身?如何以一种不会导致数据中的逗号被解释为分隔的方式来完成?

0 个答案:

没有答案