CSV 行末尾的未终止引用字段。丢失文本的开头

Posted

技术标签:

【中文标题】CSV 行末尾的未终止引用字段。丢失文本的开头【英文标题】:Unterminated quoted field at end of CSV line. Beginning of lost text 【发布时间】: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”这样的字段。 【参考方案1】:

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

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

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

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

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

【讨论】:

以上是关于CSV 行末尾的未终止引用字段。丢失文本的开头的主要内容,如果未能解决你的问题,请参考以下文章

以 NSException 类型的未捕获异常终止 - 删除表视图行

无效更新:第 0 节中的无效行数以 NSException 类型的未捕获异常终止

从 CSV 文件中删除字符

Python 2 CSV 编写器在 Windows 上产生错误的行终止符

Python3避免在csv文件末尾引用和引用额外的行

从CSV中的行读取值时丢失字符串中的最后一个字符