Отсутствующий разделитель значений в позиции - PullRequest
0 голосов
/ 27 июня 2018

Я получаю сообщение об ошибке «Отсутствует разделитель значений в позиции 1» при импорте файла CSV с Java.

Вот мой код:

 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?

1 Ответ

0 голосов
/ 28 июня 2018

Не уверен, как вы читаете данные CSV, но ваш CSV имеет 4 столбца, а не 3:

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

В строках 1 и 3 есть пустое значение для четвертого столбца, но это считается как столбец.

Так что, возможно, попробуйте вернуть 4 для fieldcount:

protected int getFieldCount() 
{       
    return 4;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...