java - 位置处缺少值分隔符

标签 java csv delimiter

使用 Java 导入 CSV 文件时出现“位置 1 缺少值定界符”错误。

这是我的代码:

 protected int getFieldCount() 
{       
    return 3;
}
protected void importRecord(List<String> record, int lineNumber) {
 String rawScore = record.get(ELEMENT_RAW_SCORE).trim();
 String contextScore = record.get(ELEMENT_CONTEXT).trim();
 String subtest = record.get(ELEMENT_SUBTEST).trim();
}

如果我的 csv 文件如下所示:

95,Performance Scale,codes,       
ME,Performance Scale,Numbers,test
NM,Scale,Strategies,

当我在其中一行中留下额外的字符(因为第 2 行中有“test”)时,我收到错误,否则导入运行正常。即使我只添加到其中一行,每一行都会显示错误。

getFieldCount() 方法返回 int 源文件中每条记录中应出现的预期字段数,如果未严格执行字段数,则返回非正值。

split("\t") 这样的字符串方法不起作用,因为它不是导致此问题的制表符分隔符。即使我严格强制执行,代码在第 3 栏之后也不会停止阅读。我怎样才能告诉它在第 3 列之后不读取任何内容?

最佳答案

不确定您如何读取 csv 数据,但您的 csv 有 4 列,而不是 3 列:

95,Performance Scale,codes,       
ME,Performance Scale,Numbers,test
NM,Scale,Strategies,

第 1 行和第 3 行的第四列为空值,但这算作一列。

所以也许尝试为 fieldcount 返回 4:

protected int getFieldCount() 
{       
    return 4;
}

关于java - 位置处缺少值分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51070456/

相关文章:

java - 无法从回合制多人游戏的类中访问数据库

java - Map<?, ?> 在 Java 中是什么意思?

java - 将数字数组转换为 CSV 字符串的最佳方法?

Java Scanner,模式以及useDelimiter()和skip()之间的区别

java - 没有输入时扫描仪卡住程序

java - 为什么 java 无法播放我的 .wav 文件?

python - 如何在 python 中将 Avro 文件转换为 CSV 文件?

python - 如何从两个制表符分隔的文件中获取枢轴线?

java - 在 Java 模式匹配中获取定界符

c# - 为什么 Regex.Split 在正则表达式上拆分时保留分隔符