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

Processing 3读取CSV文件异常求助:无法识别"Nil"值

解决Processing 3读取CSV时无法检测到"Nil"字符串的问题

嘿,我看到你在用Processing 3读取titanicLinearisedDataSet.csv时遇到了头疼的问题——明明文件里存在"Nil"值,但代码就是检测不到。结合你给出的代码片段和CSV截图,我来帮你梳理几个最可能的原因和对应的解决办法:

1. 手动分割字符串时的细节遗漏

从你贴的代码来看,你是用loadStrings()把文件拆成每行,再手动分割成二维数组。这种方式很容易踩CSV的各种小坑:

  • "Nil"前后有隐藏空白:比如CSV里的"Nil"可能带了空格、制表符,或者每行末尾有残留的换行符,导致你拿到的字符串是" Nil"或者"Nil\n",直接用equals("Nil")自然匹配不上。
  • 被引号包裹的"Nil":如果你的CSV里"Nil"是用双引号括起来的(比如"Nil"),分割后字符串会带着引号,这时候判断肯定失败。

修正后的手动分割代码

String[][] array; 
void setup() { 
  String[] lines = loadStrings("titanicLinearisedDataSet.csv"); 
  array = new String[lines.length][3]; 
  
  for (int i = 0; i < lines.length; i++) {
    // 先去掉每行前后的所有空白字符(包括换行、空格、制表符)
    String cleanedLine = lines[i].trim();
    // 按逗号分割成列(如果你的CSV用的是其他分隔符,比如分号,就改成";")
    String[] cols = cleanedLine.split(",");
    
    // 遍历每一列,去掉可能的双引号,再清理一次空白
    for (int j = 0; j < cols.length; j++) {
      array[i][j] = cols[j].replace("\"", "").trim();
    }
    
    // 现在再检测"Nil",比如检测第二列(索引1)
    if (array[i][1].equals("Nil")) {
      println("找到Nil值,在第" + (i+1) + "行");
    }
  }
}

2. 优先用Processing自带的Table类读取CSV

手动处理CSV分割真的很容易出错,Processing专门提供了Table类来处理这类文件,它会自动处理引号、分隔符、空白等细节,代码更简洁也更稳定:

Table titanicData;
void setup() {
  // 加载CSV,如果你的文件有表头,就加上"header"参数,没有就去掉
  titanicData = loadTable("titanicLinearisedDataSet.csv", "header");
  
  // 遍历每一行数据
  for (TableRow row : titanicData.rows()) {
    // 获取指定列的值,这里替换成你要检测的列名(比如"Age")
    String targetValue = row.getString("Age");
    
    // 检测前先清理空白,再判断
    if (targetValue.trim().equals("Nil")) {
      println("找到Nil值,行号:" + (row.getIndex() + 1));
    }
  }
}

3. 检查CSV文件的编码问题

你是用TextEdit创建的CSV,有可能保存时用了非UTF-8的编码(比如UTF-16或者Mac罗马编码),导致Processing读取时字符乱码,"Nil"变成了看不见的异常字符,自然匹配失败。

解决办法:

打开你的CSV文件,在TextEdit里:

  1. 点击顶部菜单「格式」→「转换为纯文本」
  2. 然后「文件」→「存储」,在存储弹窗的选项里,把编码改成UTF-8,再保存。

先试试用Table类的方案,这应该能解决大部分CSV读取的问题,如果还是不行,再检查编码和手动分割的细节~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:26