openCSV CSVReader ожидает строки с одинаковым количеством полей?

У меня есть csv, кодирующий тезаурус некоторых элементов, и, как и ожидалось, количество записей в строке различно для разных строк.

Первая строка содержит 25 токенов/синонимов. Остальные линии имеют меньшее значение. Но все прочитанные String[] имеют длину 25. Более короткие строки дополняются пустыми строками.

Есть ли способ избежать этого?

Мой код выглядит так:

CSVReader reader = new CSVReader(new FileReader("thesaurus.csv", '\t'));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
    System.out.println("length of the row: "+ nextLine.length);
}

Примеры строк из csv:

search  examination  exploration    hunt    inquiry inspection  investigation   pursuit quest   research    chase   frisking    going-over  inquest pursual pursuance   pursuing    rummage scrutiny    shakedown   fishing expedition  legwork perquisition    wild-goose chase    witch hunt
school  schule
saint   st. st

Когда я печатаю элементы String[] один за другим, я получаю следующее:

'school', 'schule', , , , , , , , , , , , , , , , , , , , , , , , 
'saint', 'st.', 'st', , , , , , , , , , , , , , , , , , , , , , , 

person Navneet    schedule 22.08.2013    source источник
comment
@Reimeus Добавлено. Я не имел в виду явное дополнение. Я имел в виду, что способ инициализации String[] в reader.readNext() может быть проблемой. Или я упускаю что-то действительно очевидное... Спасибо.   -  person Navneet    schedule 23.08.2013
comment
@Reimeus У меня нет завершающих вкладок в моем CSV. Я выполнил постобработку до removeAll() пустых или нулевых записей.   -  person Navneet    schedule 23.08.2013


Ответы (1)


Я думаю, у вас есть конечные пробелы во входном CSV.

String[] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        for (String line : nextLine) {
            System.out.println(line.replaceAll(" ", "."));
        }
    }

Это вывод, если нет завершающих пробелов.

search..examination..exploration....hunt....inquiry.inspection..investigation...pursuit.quest...research....chase...frisking....going-over..inquest.pursual.pursuance...pursuing....rummage.scrutiny....shakedown...fishing.expedition..legwork.perquisition....wild-goose.chase....witch.hunt
school..schule
saint...st..st

Это вывод, если есть конечные пробелы.

search..examination..exploration....hunt....inquiry.inspection..investigation...pursuit.quest...research....chase...frisking....going-over..inquest.pursual.pursuance...pursuing....rummage.scrutiny....shakedown...fishing.expedition..legwork.perquisition....wild-goose.chase....witch.hunt
school..schule............................
saint...st..st.............................................
person baskar_p    schedule 29.08.2013