【问题标题】:Unterminated quoted field at end of CSV line. Beginning of lost textCSV 行末尾的未终止引用字段。丢失文本的开头
【发布时间】:2022-01-17 16:45:07
【问题描述】:

我正在尝试使用 CSV Reader 解析 CSV 文件。该文件非常大,我不能以任何方式修改它,因为我不是创建它的人。

FileReader fileReader = new FileReader(nameFile);
   CSVParser csvParser = getCSVParser();
   CSVReader csvReader = getCSVReader(fileReader, csvParser);
   if (csvReader != null) {
      List<String[]> allData = csvReader.readAll();
              ...
   }

csvReader.readALL() 在 CSV 行的末尾抛出 IOException:Unterminated quoted field。丢失文本的开头:... 我该如何解决?

【问题讨论】:

  • 看看有问题的行并修复它?
  • 你需要在解析之前清理和验证你的数据。
  • @tgdavies 我无法修改文件
  • 至少看看那行并理解为什么该字段未终止。引号的转义方式是否不寻常?
  • 有一个像“something ; something”这样的字段。

标签: java csv file parsing ioexception


【解决方案1】:

CVS 是有史以来最糟糕但被广泛使用的格式。而且绝对没有标准,也没有共同的理解......

首先,分析您的输入文件并找出使用的结构: 逗号、分号等作为字段分隔符。引用字段、引用字符等

其次,确保没有格式违规,例如未引用的字段包含分隔字符作为文字字符或字段中未转义的引用字符。尤其是尝试找到违反结构的行。

第三次为 CSV 解析器设置正确的选项。

如果您在文件中存在格式违规,您可以尝试改进文件的制作/导出以生成有效的 CSV 格式(如果您认识制作者并且可以访问他)或使用能够使用的工具对其进行预处理检测和纠正格式违规(某种魔法水晶球)。

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 2011-06-25
    • 2022-12-15
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多