从CSV文件中读取数据,使用逗号','分割问题

时间:2022-09-15 14:03:30
  1. package Test;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileReader;  
  6. import java.io.IOException;  
  7. import java.io.PrintWriter;  
  8. import java.io.UnsupportedEncodingException;  
  9.   
  10. public class ReadCSV_major {  
  11.       
  12.     public static void main(String [] args){  
  13.         ReadCSV_major read = new ReadCSV_major();  
  14.         read.run();  
  15.     }  
  16.     public void run(){  
  17.         String csv = "/Users/huazhe/Desktop/项目数据/Professors.csv";  
  18.         BufferedReader br = null;  
  19.         String line ="";  
  20.         String csvSplitBy = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)";  
  21.           
  22.         //where should we save  
  23.         String path_file = "/Users/huazhe/Desktop/项目数据/major.txt";  
  24.           
  25.         PrintWriter writer_path = null;  
  26.           
  27.         try {  
  28.             writer_path = new PrintWriter(path_file,"UTF-8");  
  29.             br = new BufferedReader(new FileReader(csv));  
  30.             while((line = br.readLine()) != null){  
  31.                   
  32.                 //use comma as separatpr  
  33.                 String [] major = line.split(csvSplitBy);  
  34.                 System.out.println("major"+major[5]);  
  35.             }  
  36.               
  37.         } catch (FileNotFoundException e) {  
  38.           
  39.             e.printStackTrace();  
  40.         } catch (UnsupportedEncodingException e) {  
  41.               
  42.             e.printStackTrace();  
  43.         } catch (IOException e) {  
  44.             // TODO Auto-generated catch block  
  45.             e.printStackTrace();  
  46.         }  
  47.           
  48.           
  49.     }  
  50. }  


上述代码功能是读取数据从csv文件。

当大家进行这一操作的时候通常会遇到如下问题。

1: 想分割数据 例如:

"123","Jack jona","Computer science"

"234","Joen Dan", "Philosophy"

//当遇到这种数据的时候可直接用  逗号进行分割。

2: 分割数据如下:

"123", "jack jona", "New York, NY"

"234", "Lee Jack", "Fort myers, FL"

//当遇到这种数据的时候可以直接使用 

[java]  view plain  copy
  1. ,(?=([^\"]*\"[^\"]*\")*[^\"]*$)  
//进行分割。 这种的好处是只对引号外面的逗号进行分割,对引号内的不分割。

//简单的说这种分割得出的结果是

123 jack jona New York, NY

234 Lee Jack Fort myers, FL

//简单使用逗号分割结果是

123 jack jona New York NY

234 Lee jack Fort myers FL