Как правильно разобрать файл CSV в 2d Array? - PullRequest
1 голос
/ 01 сентября 2010

Я пытаюсь разобрать файл CSV в 2d массив, где каждая строка представляет собой запись данных, а каждый столбец представляет собой поле в этой записи.

Выполнение всего этого за один раз упрощает и отделяет мой код обработки от моего кода синтаксического анализа.

Я попытался написать простой парсер, который использовал String.Split для разделения файлов запятыми. Это ужасный подход, как я обнаружил. Он полностью не может анализировать любые особые случаи, такие как двойные кавычки, переводы строки и другие специальные символы.

Как правильно разбирать файл CSV в 2d массив, как я описал?

Примеры кода на Java приветствуются. Массив может быть объектом динамического списка, вектором или чем-то в этом роде, его просто нужно проиндексировать двумя индексаторами.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2010

Если в вашем файле есть поля с двойными кавычками, содержащими разделители, и поля с переводами строк, то я сомневаюсь, что это настоящий CSV-файл ... правильный CSV-файл - это что-то вроде

1;John;Doe;engineer,manager
2;Bart;Foo;engineer,dilbert

пока это "что-то другое":

1;John;Doe;"engineer;manager"
2;Bart;Foo;
   "engineer,dilbert"

И первый пример разбирается с String.split в каждой строке.

0 голосов
/ 01 сентября 2010

Посмотрите на Commons CSV ?

CSVParser parser = new CSVParser(new FileReader(file));
String[] line;
while ((line = parser.getLine()) != null) {
     // process
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...