转义univocity csv解析器中的分隔符

时间:2018-06-19 10:02:28

标签: java csv univocity

我有一个场景,其中数据中的一行在内容中具有分隔符。

5 |0St"|"ring |field[1]

应始终通过 - 引用字段分隔符

其中分隔符是|如上所示,它也存在于其中一列中。

我的配置如下:

quoteChar = "
quoteEscapeChar = \\

但是当我尝试解析该行时,它会将列拆分为两个单独的列(“0St”和“ring”)并失败。

如果在整个列周围放置引号,如下所示,它可以正常工作。

5 |"0St|ring" |field[1]

应始终通过 - 引用字段分隔符

是否有任何设置来指定分隔符转义字符?

我正在使用univocity 2.5.9

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

此处是库的作者。我相信我已经在您打开的ticket中解释了该问题,但让我再试一次:

基本上,是CSV格式的工作方式。

如果您的值中有一个字段定界符(即您在|0St之间有一个ring),则必须用整个引号引起来,即,必须将值写成为"0St|ring",而不是0St"|"ring

任何CSV解析器都会将0St"|"ring读入0St",然后尝试将|之后的内容作为另一个值进行处理。除了将整个值写在引号中,您别无选择。

0St"|"ring解析为单个值的唯一方法(我假设您想获得0St|ring的结果)是编写自己的解析代码以这种方式处理数据。

希望这会有所帮助。