我试图以csv格式打印"the file“中的一些记录,但它总是在标题中显示错误。是的,我尝试使用notepad++将编码更改为utf8、utf-16以及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:\Users\admin\Desktop\Reader Program.py", line 13, in <module>
for row in reader:
_csv.Error: line contains NUL
发布于 2021-10-17 15:19:24
该错误消息表示cvs模块正在从文件中读取NUL字符,即代码为0的字符。最明显的原因是文件实际上包含这样的字符(这意味着文件已损坏),或者文件是使用16位编码(例如UTF-16)编码的,但您正在使用8位编码读取它(假设文件保持使用英语字母表,这将使每隔一秒的字符成为NUL字符)。您必须找出文件采用的编码方式,并为open
提供适当的参数。要检查是否存在NUL字符,即使选择了正确的编码,也可以将整个文件作为字符串读取,并使用Python的字符串操作函数来搜索'\u0000'
字符。
This thread有几个可能有用的代码片段和提示,可用于查看文件中的内容。
有趣的是,在Python的未来版本中,它看起来像是这个error will be gone。
https://stackoverflow.com/questions/69605449
复制相似问题