Чтение CSV в Java

Снимок кода Проблемный пример строки У меня возникли проблемы с чтением CSV из-за строк, подобных той, которую я предоставил, которая находится в файле CSV. Слово Schr"" воздействует на читателя, заставляя его думать, что на этом значение заканчивается. Как мне обойти это? не все ряды такие. Он читается нормально, пока не достигает таких строк. Я также использую для этого программу чтения openCSV. Функция parseInteger() — это просто функция, которую я создал для отладки и поиска проблемы.

 while ((line = reader.readNext()) != null) {
                int id = parseInteger(line.length > 0 ? line[0] : null,0);
                String title = line.length > 1 ? line[1] : null;
                String abstractText = line.length > 2 ? line[2] : null;
                int maths = parseInteger(line.length > 3 ? line[3] : null, 0);
                int physics = parseInteger(line.length > 4 ? line[4] : null, 0);
                int compsc = parseInteger(line.length > 5 ? line[5] : null, 0);
                int stats = parseInteger(line.length > 6 ? line[6] : null, 0);
                int quantbio = parseInteger(line.length > 7 ? line[7] : null, 0);
                int quantfin = parseInteger(line.length > 8 ? line[8] : null, 0);


                articles.add(new Article(title, id, abstractText, maths, physics, compsc, stats, quantbio, quantfin));

Я пытался использовать различные функции, чтобы обойти это, но пока ничего не получалось.

Не размещайте код в изображении. Код должен быть размещен в формате с вопросом.

camickr 18.08.2023 15:49

Удалите \"" из слова Shrodinger в столбце Альтернативный текст. Вы найдете эту ерунду в нескольких записях CSV. Убедитесь, что вы также используете CSVReader.

DevilsHnd - 退職した 18.08.2023 18:10

Правильное написание — Schrödinger, но кажется, что кто-то считает хорошей идеей использовать строку \"" o вместо буквы ö. Выполните поиск и замену в файле. Либо так, либо вы читаете с неправильной кодировкой символов.

k314159 18.08.2023 18:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема с обратной косой чертой и двойными кавычками. CSV использует запятые в качестве разделителя значений, поэтому, если вам нужно использовать запятую в значении, вы должны заключить значение в двойные кавычки. Value1,Value2,"Value,3",Value4

Если вам нужно использовать запятую и двойные кавычки, вам нужно избежать этого (например): Value1,Value2,"Value,\"3\"",Value4

Я думаю, что CSV недействителен и парсер путается из-за двойной кавычки с обратной косой чертой.

Сначала вы должны очистить свой CSV и использовать escape-последовательность только там, где она должна использоваться.

В вашем случае это недопустимо: val1,Schr\"",val3

Это будет работать: val1,"Schr\"",val3

Другие вопросы по теме