1

I'm trying to parse a csv file into a 2d array, where each row is a data entry and each column is a field in that entry.

Doing this all at once simplifies and separates my processing code from my parsing code.

I tried to write a simple parser that used String.Split to separate file by commas. This is a horrible approach as I have discovered. It completely fails to parse any special cases like double quotes, line feeds, and other special chars.

What is the proper way to parse a CSV file into a 2d array as I have described?

Code samples in Java would be appreciated. The array can be a dynamic list object or vector or something like that, it just has to be indexable with two indexers.

2 Answers 2

0

Have a look at Commons CSV?

CSVParser parser = new CSVParser(new FileReader(file));
String[] line;
while ((line = parser.getLine()) != null) {
     // process
}
Sign up to request clarification or add additional context in comments.

Comments

0

If your file has fields with double quoted entries that contain separators and fields with line feeds, than I doubt that it is a real csv file... a proper csv file is something like this

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

while this is "something else":

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

And the first example is parseable with String.split on each line.

1 Comment

CSV files can be much more complicated. Read this formal spec here: supercsv.sourceforge.net/csvSpecification.html and you'll see that newlines, double quotes and such are allowed within quotations

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.