我正在尝试使用 JakartaCommons-csv 解析 CSV 文件
示例输入文件
Field1,Field2,Field3,Field4,Field5
"Ryan, R"u"bianes"," dummy@gmail.com","29445","626","South delhi, Rohini 122001"
格式化程序:CSVFormat.newFormat(',').withIgnoreEmptyLines().withQuote('"') CSV_DELIMITER 是 ,
输出
- CSV 解析后的 Field1 值应为:Ryan, R"u"bianes
- CSV 解析后的 Field5 值应为:South delhi, Rohini 122001
异常: Caused by: java.io.IOException: (line 2) invalid char between encapsulated token and delimiter
最佳答案
问题是您的文件未遵循 CSV 文件中公认的引用标准。在带引号的字符串中表示引号的正确方法是重复引号。例如。
Field1,Field2,Field3,Field4,Field5
"Ryan, R""u""bianes"," dummy@gmail.com","29445","626","South delhi, Rohini 122001"
如果您限制自己使用 CSV 引用的标准形式,Apache Commons CSV 解析器应该可以工作。
不幸的是,为您的变体格式编写一致的解析器是不可行的,因为如果您需要表示包含“Ryan R”,"baines< 的字段,则无法消除嵌入式逗号和字段分隔符的歧义
”。
在 CSV 文件中引用的规则在各个地方都有规定,包括 RFC 4180 .
关于java - Apache 通用 CSV 格式化程序 : IOException: invalid char between encapsulated token and delimiter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423910/