OpenCsv разбивает строки в необычном формате - PullRequest
0 голосов
/ 10 апреля 2019

Я использую OpenCSV для анализа некоторых строк в CSV-файле. В данный момент я сталкиваюсь с довольно обременительным крайним случаем для этого ввода:

'10,00', '20,00','aaa', '       false   true         '\n
'aaaaa\'', '-*/++;;', '','-'
'1898302','21/07/2011','12:59','7104'

Мне нужно сохранить это в List<List<String>>, чтобы оно совпадало:

listExpected = Arrays.asList(Arrays.asList("10,00", "20,00", "aaa", "       false   true         "),
                Arrays.asList("aaaaa'", "-*/++;;", "", "-"),
                Arrays.asList("1898302", "21/07/2011", "12:59", "7104"));

Вот ошибка, которую я получаю:

Expected :[[10,00, 20,00, aaa,        false   true         ], [aaaaa', -*/++;;, , -], [1898302, 21/07/2011, 12:59, 7104]]
Actual   :[['10, 00',  '20, 00', 'aaa',  '       false   true         '], ['aaaaa'',  '-*/++;;',  '', '-'], ['1898302', '21/07/2011', '12:59', '7104']]

Вот код, который я использую:

 List<String> splittedLines = // manually split
 List<List<String>> toReturn = new ArrayList<>();

 CSVParser csvParser = new CSVParserBuilder()
     .withSeparator(',')
     .build();
 for (String sLines : splittedLines) {
     CSVReader reader = new CSVReaderBuilder(new StringReader(sLines))
         .withCSVParser(csvParser)
         .build();

      for (String[] line : reader)
          toReturn.add(Arrays.stream(line).collect(toList()));
 }
 return toReturn;

В первой строке я разбиваю строки вручную, потому что мне нужно выполнить некоторые операции над каждой из них независимо. Затем я передаю каждую строку читателю, но эти странные форматы меня озадачивают. Более того, в первой строке ввода разделитель также появляется в одном или нескольких фактических значениях, и библиотека, кажется, не анализирует его точно.

Может кто-нибудь помочь?

...