Python _csv.错误:行包含新的CSV文件的NUL



我试着从"文件"上打印一些记录。在csv格式,但它一直显示错误的标题。是的,我试图将编码更改为utf8, utf-16,以及使用notepad++的utf-16-le。还是不行。请帮忙:c

输入代码:

import csv
f=open("thefile.csv", 'r', encoding="ansi")
reader=csv.reader(f)
covaxin=0
covishield=0

c1="Covaxin"
c2="Covishield"
a="41 - 60 years"

for row in reader:
if (row[3]==a):
for bro in reader:
if (bro[4]==c1):
covaxin+=1
print("Covaxin: ", covaxin)
elif (bro[4]==c2):
covishield+=1
print("Covishield:", covishield)
else:
print("error")

f.close()  

,这是输出:

Traceback (most recent call last):
File "C:UsersadminDesktopReader Program.py", line 13, in <module>
for row in reader:
_csv.Error: line contains NUL

错误信息表示cvs模块正在从文件中读取一个NUL字符,即代码为0的字符。最明显的原因是文件实际上包含这样一个字符(这意味着文件被破坏了),或者文件用16位编码(例如UTF-16)编码,但您正在用8位编码读取它(假设文件保持英文字母,这将使每第二个字符都是NUL字符)。您必须找出文件的编码,并为open提供适当的参数。要检查是否存在NUL字符,即使选择了正确的编码,您可以将整个文件作为字符串读取,并使用Python的字符串操作函数来搜索'u0000'字符。

这个线程有几个潜在的有用的代码片段和提示来查看文件中的内容。

有趣的是,这个错误似乎会在Python的未来版本中消失。