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

Python读取CSV文件报错_csv.Error: line contains NUL如何解决

问题根因

_csv.Error: line contains NUL 报错的触发条件是csv解析器读取的行中包含空字符(ASCII 0,转义表示为\x00),这类空字符通常是文件导出、传输过程中异常生成的,不属于编码问题,因此修改文件编码无法解决。

另外你的原代码存在逻辑问题:csv.reader是迭代对象,只能遍历一次,嵌套遍历reader会导致外层循环提前终止、行读取遗漏,也会影响最终统计结果。

修复方案

1. 读取时直接过滤空字符(无需修改原文件)

修改读取文件的逻辑,把读取到的内容里的空字符全部删掉再传给csv解析,同时修复原有逻辑问题,可直接运行的参考代码如下:

import csv
covaxin = 0
covishield = 0
c1 = "Covaxin"
c2 = "Covishield"
a = "41 - 60 years"

# 读文件时自动替换所有NUL空字符
with open("thefile.csv", 'r', encoding="ansi", errors="ignore") as f:
    # 把空字符全部替换为空,再按行拆分传给csv解析器
    content = f.read().replace('\x00', '')
    reader = csv.reader(content.splitlines())
    for row in reader:
        # 增加行长度校验,避免短行触发索引越界错误
        if len(row) < 5:
            continue
        if row[3] == a:
            if row[4] == c1:
                covaxin += 1
                print("Covaxin: ", covaxin)
            elif row[4] == c2:
                covishield += 1
                print("Covishield:", covishield)
            else:
                print("error")

2. 手动清理原文件(可选)

如果需要修改原始csv文件消除空字符,可以用Notepad++打开thefile.csv,按Ctrl+F打开查找替换面板:

  • 查找目标输入\x00
  • 替换为留空
  • 查找模式选择「扩展(\n,\r,\t,\0,\x...)」
  • 点击「全部替换」后保存文件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:24:03