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

Python不使用pandas遍历CSV行时如何跳过含'-'和'NA'的行及排错

问题原因

  1. 内层循环的continue作用域错误:你在内层遍历prices的循环中使用的continue,仅会跳过当前price的校验逻辑,进入下一个price的遍历,既不会跳出内层循环,也不会跳过当前行的后续处理逻辑。
  2. for...else逻辑使用错误:Python中for循环绑定的else分支,仅会在内层循环全程没有触发break、完整遍历完所有元素时执行。你当前的代码中内层循环永远不会触发break,因此else分支的pass总会执行,后续的print(values)无论什么情况都会运行,导致所有行都被输出。
  3. (可选优化)判断逻辑"-" in price会匹配所有包含-的元素,如果你需要过滤的是「整个元素完全等于-或NA」的行,建议使用全等判断==,避免误过滤包含这两个字符的合法值。

修正实现

基础写法(逻辑清晰易读)

for row in open("modified_data.csv"):
    values = row.strip().split(',')
    valid_row = True
    # 仅校验索引1及之后的元素
    for price in values[1:]:
        if price == "-" or price == "NA":
            valid_row = False
            break
    # 仅保留有效行
    if valid_row:
        print(values)
        # 此处可添加写入新CSV的逻辑

简化写法(用any()函数减少嵌套)

for row in open("modified_data.csv"):
    values = row.strip().split(',')
    # 判断索引1之后的元素是否不存在要排除的值
    if not any(price in ("-", "NA") for price in values[1:]):
        print(values)

如果需要写入新CSV,直接将print(values)替换为逗号拼接后写入文件的逻辑即可,无需引入pandas。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:54:03