Univocity解析器 - 错误的信息时,错误的定界符自动检测



我设置了解析器以自动检测定界符

CsvParserSettings settings = new CsvParserSettings();
settings.detectFormatAutomatically();

我只有1个单一记录:47W2E2qxPs, http://usda.gov/mattis.html

我得到的:

code: 47W2E2qxPshttp url: //usda.gov/mattis.html

我希望定界符为,,而不是:

所以我的预期结果是47W2E2qxPshttp://usda.gov/mattis.html

我可以优雅地修复它吗?

库的作者。检测过程是一种启发式,它使用了从您的一部分输入的多个行收集的统计信息。因此,这在很大程度上取决于输入的大小。

其目的是处理无法轻易确定CSV格式的情况 - 例如用户将随机文件上传到您时。如果您已经知道正确的定界符是什么。

,请勿使用检测过程。

在您的情况下,一排数据绝对不足以可靠地检测到定界线,尤其是在存在多个符号的情况下。除了测试检测到的定界符之前,您几乎无能为力:

parser.beginParsing(new File("/path/to/your.csv"));
CsvFormat format = parser.getDetectedFormat();
//check if the format is sane.

下一个版本(2.6.0)将包括更多的选择来协助启发式方法,例如提供一组允许的字符作为定界数 - 在您的情况下可能会有所帮助。

相关内容

  • 没有找到相关文章

最新更新