报错解决:Error: line contains NULL byte

这句报错的意思的,csv读取的内容的某行内含有空字节
在Python里空字节是 \x00

In [1]: a = '\0'
In [2]: a
Out[2]: '\x00'
In [3]: b = '\x00'
In [4]: b
Out[4]: '\x00'
In [5]: a == b
Out[5]: True

先造个这样错误的文件出来,请在PyCharm里打印出来,然后把打印结果复制到一个csv文件里

print('1,\x00,2')

OK,异常文件有了

测试代码

with open('file.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader)

不出意外会得到一个该死的异常:_csv.Error: line contains NULL byte
那么,如何修改呐,很简单,替换即可

修改代码

with open('file.csv', 'r') as f:
    reader = csv.reader(_.replace('\x00', '') for _ in f)
    next(reader)

为什么会有这种坑爹的错误?
1.写进去的数据里有这玩意
2.这个文件是个excel,结果却保存成了csv
3.多个进程对同一个文件进行读写操作

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值