开发者

How to properly parse CSV file to 2d Array?

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 ch开发者_开发问答ars.

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.


Have a look at Commons CSV?

CSVParser parser = new CSVParser(new FileReader(file));
String[] line;
while ((line = parser.getLine()) != null) {
     // process
}


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜