我正在尝试使用 Univocity格式自动检测来解析此 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 逗号',',但实际分隔符是空格''