csv文件读取错误的列

问题描述:

我想读取我的csv文件,但是在csv里面我必须独立使用逗号,csv文件读取错误的列

"name1", 'U', Times.perMinute(1, 15), 'A', 1049*2.1,0,   Times.MINUTE*15, False, ['X'] 


"name2", 'U', Times.perHour(1),  'B', 1023*4, 1024*4,  Times.MINUTE*15, True, ['Y','Z'] 

我尝试只读第4列和第5列,但是我的输出看起来很奇怪。我在想这个问题来自,。我该如何解决这个问题?

编辑:

,我用

public static void main(String args[]) throws Exception { 
     String splitBy = ","; 
      BufferedReader br = new BufferedReader(new FileReader("rules.csv")); 
      String line = br.readLine(); 
      while ((line = br.readLine()) != null) { 
       String[] cols = line.split(splitBy); 
       System.out.println("Uplink" + cols[4] + " ,Downlink" + cols[5]); 
      } 
      br.close(); 
+0

如果可能,生成带有非ASCII分隔符的csv文件。在java中,你可以使用'char separator = 1;' – shanmuga

编辑 正如我在评论中规定的代码,

你可以使用一个不同的分隔符,比如分号,和 然后在你的代码中,你会将splitBy改为分号。这应该 工作,但后来它在技术上不是一个CSV文件(逗号分隔值 )

因为当你简单的写Times.perMinute(1,15)代码解析它为2个值:

第一个是'Times.perMinute(1'

和第二'15)'


另外请阅读RFC

  1. 含有换行符(CRLF),双引号,和逗号 字段应该被包含在双引号。
开始=>
+0

你的解决方案没有按照我的预期工作......即使我改变了我的csv文件,正如你所说 – limonik

+0

我很难说出为什么它不像你期望的那样工作,不知道你是如何读“Times.perHour(1)”部分和“Times.MINUTE * 15”的。我猜你是将这些部分解析为字符串? –

+0

我编辑了我的问题,请检查我的代码 – limonik