首页 > 解决方案 > 尝试解析某些 COLUMN 单元格为空的 csv 文件

问题描述

我正在尝试读取具有 6 列的 .csv 文件,但最后一列中的某些行是空单元格。

item1   2   4   125 200 
item2   5   8   250 375 
item3   2   3   125 200 
item4   2   4   200 325 10
item5   1   2   325 400 10
item6   1   2   250 350 10

结果

row 0: item1
row 1: 2.0
row 2: 4.0
row 3: 125.0
row 4: 200.0
new --------: 0
row 0: item2
row 1: 5.0
row 2: 8.0
row 3: 250.0
row 4: 375.0
new --------: 0
row 0: item3
row 1: 2.0
row 2: 3.0
row 3: 125.0
row 4: 200.0
  • Java 代码应该获取所有行,将每个值解析为双精度。
  • 最后一列如果为空,则打印 0 值,否则解析最后一列值

问题:如何获取行的空单元格值并设置 int lastColEmpytyValue = 0;?

    while(inputStream.hasNext()) {
    String data = inputStream.nextLine(); // gets a while line .next gets next word i.e. ice. .nextLine get word with spaces i.e. ice cream

        String[] row = data.split(",", -1); // regex - split line

    System.out.println("row 0: " + row[0] ); 
    System.out.println("row 1: " + Double.parseDouble(row[1] )); 
    System.out.println("row 2: " + Double.parseDouble(row[2]) ); 
    System.out.println("row 3: " + Double.parseDouble(row[3]) ); 
    System.out.println("row 4: " + Double.parseDouble(row[4]) ); 
    if (row[5] == null || row[5].isEmpty() || row[5] == "") {
        int row5;
        row[5] = "0";
        row5 = Integer.parseInt(row[5]);
        System.out.println("new --------: " +row5);

    } else {
        System.out.println("row 5.....: " + row[5]);

    }
}

标签: javastringcsvparsingjava.util.scanner

解决方案


您只需更改行,因为我在您的示例数据中看不到“,”。

String[] row = data.split(",", -1);

类似于如果您的数据有制表符或空格作为分隔符。

//if you have "tabbed" separated data
String[] row = data.split("\t", -1);   
// if you have "space" separated data
//String[] row = data.split(" ", -1);

推荐阅读