You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在读取CSV文件时忽略包含空值的整行?(附Java代码示例)

解决CSV文件中包含空值行的忽略问题

当然有办法啦!你可以在解析每一行的时候,先检查拆分后的字段是否完整且无空值,这样就能直接跳过那些不符合格式的行。

你的CSV格式要求每行必须包含3个字段:person_number,name,age,像5,fee,这种行拆分后虽然数组长度是3,但第三个字段是空字符串,我们可以通过以下逻辑过滤掉这类无效行:

  1. 先确保拆分后的数组长度恰好为3(排除字段数量过多或过少的行)
  2. 检查每个字段的内容(可先去除首尾空格)都不为空

修改你的Java代码如下:

while (((line = br.readLine()) != null)) {
    String[] employeeDetails = line.split(COMMA_DELIMITER);
    // 校验字段数量正确,且所有字段非空(去除首尾空格后)
    if (employeeDetails.length == 3 
        && !employeeDetails[0].trim().isEmpty()
        && !employeeDetails[1].trim().isEmpty()
        && !employeeDetails[2].trim().isEmpty()) {
        try {
            ADInputFile emp = new ADInputFile(employeeDetails[0], employeeDetails[1], employeeDetails[2]);
            empList.add(emp);
        } catch (Exception e) {
            // 可添加异常处理,比如打印错误行信息
            System.err.println("解析行失败: " + line + ", 错误原因: " + e.getMessage());
        }
    }
    // 不符合条件的行会直接被跳过,不加入empList
}

额外说明:

  • 用trim()是为了处理字段仅含空格的情况(比如5,fee, ),如果你的场景不需要考虑空格,可以去掉trim(),直接判断!employeeDetails[2].isEmpty()
  • 一定要给try块补上catch逻辑,避免解析时出现异常导致程序崩溃
  • 如果之后你的CSV出现更复杂的场景(比如字段内包含逗号),建议使用专门的CSV解析库(比如OpenCSV),不过针对你当前的简单需求,上面的代码完全够用

内容的提问来源于stack exchange,提问作者bharath s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:51:35