java - Univocity - 如何定义 "format auto-detection"上分隔符的优先顺序?

标签 java csv parsing univocity

我正在尝试使用 Univocity format auto-detection用于解析此 CSV 表:

HEADER1, HEADER2, HEADER3
11, 12, 13
21, 22, 23
31, 32, 33

如您所见,逗号 ',' 和空格 ' ' 的数量相同。 问题在于,查找分隔符的启发式方法优先考虑“”而不是“,”字符。

因此在这种情况下检测到的分隔符是空格“”。然后,单元格的值是错误的,因为逗号被视为值的一部分:

我看到有一个功能setDelimiterDetectionEnabled按优先级顺序定义分隔符,但我无法使其工作。

我这样使用它:setDelimiterDetectionEnabled(true, ',', ' '),但仍然选择空格作为分隔符。

如果我在 CSV 表中删除 1 个空格(因此逗号多于空格),则选择逗号作为分隔符。

这是代码,是 scala,但我认为这不相关,因为该库是用 java 编写的:

val settings = new CsvParserSettings
settings.setDelimiterDetectionEnabled(true, ',', ' ')
val parser = new CsvParser(settings)
val spaceAndCommaTable = new File("/home/pr/SPACE_AND_COMMA.csv")
val parsed = parser.parseAll(spaceAndCommaTable, "UTF-8")
val format = parser.getDetectedFormat

我希望 format.getDelimiter 包含逗号“,”,但实际的分隔符是空格“”

最佳答案

这里是该库的作者。我刚刚修复了这个问题,并将于明天发布最终版本 2.8.3,其中包括为此工作所需的调整。为了进行测试,您已经可以使用最新的 2.8.3-SNAPSHOT。

谢谢

关于java - Univocity - 如何定义 "format auto-detection"上分隔符的优先顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57357387/

相关文章:

java - 如何在 Java 中从 Google 日历获取事件?

java - 团结 : Call Android Kotlin Function Inside Companion Object from Unity

r - 将 csv 转换为原生 hadoop 格式

java - 用于宽容命令解释器的最佳 Java 库

java - 如何使用 Volley (TextView) 解析数组数据

java - 在Java中使用JPanel绘制矩形

c - 如何从 CSV 文件(C 语言)读取和写入寄存器?

python - Django CSV 导入 - 使用 æ、ø、å(丹麦语字符)和空格时仅导入第一个数据行

parsing - 我可以在我的网站上使用 Google 结果中的图片吗?

java - 是否有用于 Java XML 解析的类似 jQuery 的选择器?