简体   繁体   中英

parsing csv by “,” and “ ”

I have file with data format as

userid, friend id, books id, cd id
1, 11 12 14 12, 223 256 333 234 222, 22
2, 78 22, 22 66 11 29, 76 455
3, 123 22 11 234 198 122 881, 34 12 98 64, 22

where I need to use only user id and cd id, But I am unable to separate these fields.

My Java code as below.

BufferedReader in = new BufferedReader(new FileReader("CSV_test.txt"));

BufferedWriter ou =new BufferedWriter(new FileWriter("users.csv"));
String str;
str = in.readLine();

while ((str = in.readLine()) != null) {

  String[] ar = str.split(",");
  String[] ar1 = ar[1].split("");


  ou.write(ar[0]);
  ou.write(",");
  ou.write(ar1[1]);

  ou.newLine(); }
in.close();
ou.close();
}

Is there any issue with this?

Surely you want

 String[] ar = str.split(",");
 String user = ar[0].trim();
 String cd = ar[3].trim();

Note that I'm trimming to remove leading/trailing spaces.

You could split using ", " (note the trailing space) and that would remove the need to further trim() . It does make some assumptions however as to how your fields are separated (commas ? commas-and-spaces?) and perhaps it's worth investigating a CSV library .

No need to reinvent the wheel. While CSV parsing is fairly simple, there are things that might be a little bit complicated (such as escaping the separator in field values). Existing libraries can do this for you, such as OpenCSV or CsvJdbc

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM