如何使用没有明确格式样式的C ++解析CSV文件

时间:2017-12-03 23:53:58

标签: c++ csv parsing

我一直在撕扯我的头发,而不是通过一个几乎没有一致格式的CSV文件进行解析,并且不断违反CSV文件通常会带来的任何约定。

我的问题是,即使在使用CSV解析器或尝试编写特定于我的问题的解析器时,我遇到CSV中原始数据的问题基本上只是偶尔用逗号分隔的大量字符,这不会导致任何问题如果不是因为在逗号分隔的数据字段中存在大量无关逗号的情况,并且没有任何形式的一致结构或格式的数据我一直在努力找到正确区分&#34的方法; CSV逗号"来自逗号只是在数据字段中保存。

我查看了一些CSV解析器的文档,这些解析器链接到其他与CSV相关的问题的答案,但似乎他们无法处理问题,因为他们都希望数据的格式更加一致输入。任何帮助,甚至是指向有用方向的手指都会非常感激。

1 个答案:

答案 0 :(得分:1)

CSV格式要求引用包含逗号的字段。例如:

this.job = this.jobDoc.valueChanges();
this.job.take(1).subscribe(snap => {
  console.log('WORKED!');
});

编写一个解析器来解决这个问题并不困难,任何半开发的CSV库都应该支持它,以及处理嵌入式双引号的问题。

没有任何图书馆可以轻易支持的是一些任意逗号,例如:

 123,"one,two,three"

其中最后两个逗号实际上是第二个字段的一部分(因此实际上不是CSV)。您需要编写自己的解析器和/或以某种方式描述非CSV数据。