带有未转义引号的 Java CSV 解析器

标签 java csv supercsv

<分区>

我的 CSV 文件存在一些引用问题:

"Albanese Confectionery","157137","ALBANESE BULK ASST. MINI WILD FRUIT WORMS 2" 4/5LB",9,90,0,0,0,.53,"21",50137,"3441851137","5 lb",1,4,4,$6.7,$6.7,$26.8

SuperCSV 被这些水果虫噎住了(双关语)。我知道 2" 可能应该是 2"",但事实并非如此。LibreOffice 实际上正确地解析了它(这让我感到惊讶)。我正在考虑自己编写小解析器,但其他行在字符串中有逗号:

"Albanese Confectionery","157230","ALBANESE BULK JET FIGHTERS,ASSORTED 4/5  B",9,90,0,0,0,.53,"21",50230,"3441851230","5 lb",1,4,4,$6.7,$6.7,$26.8

有谁知道可以处理这种疯狂事情的​​ Java 库?还是我应该尝试所有可用的?还是我自己解决这个问题更好?

最佳答案

正确的解决方案是找到生成数据的人,然后用键盘敲打他们的脑袋,直到他们解决问题为止。

一旦你用尽了这条路线,你可以尝试市场上的其他一些 CSV 解析器,我用过 OpenCSV过去取得了成功。

即使 OpenCSV 不能开箱即用地解决问题,代码也相当容易阅读并且在 Apache 许可下可用,因此可以修改算法以处理您的不稳定数据,并且可能更容易而不是从头开始。

关于带有未转义引号的 Java CSV 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210568/

相关文章:

python - 当文件使用 Python 具有不同的键时将 JSON 转换为 CSV?

java - Excel 不显示使用 Super CSV 创建的 CSV 文件中的变音字符

java - 对于使用 apache POI 转换为 CSV 时的 xlsx 单元格数据

java - 如何将json响应设置为java对象

java - 减去日期并恢复和速度

python - 如何将已删除的 python pandas 列保存为 csv?

java - CSVReader 的 readNext() 函数不循环遍历 csv 的所有行 [编辑 : How to handle erroneous CSV (remove unescaped quotes)]

java - 如何从部分csv文件填充类(class)

java - 关闭/隐藏 Android 软键盘和显示自定义键盘

java - 如何更改旧单元测试的私有(private)抽象父字段