我正在尝试使用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列:
所以问题是:如何让Lumenworks CsvReader解决这些不良数据,并将未转义的双引号解释为数据本身?如何以一种不会导致数据中的逗号被解释为分隔的方式来完成?