当我尝试读取一个csv文件时,出现这种错误:
Traceback (most recent call last):
File "/root/Downloads/csvafa.py", line 4, in <module>
for i in a:
File "/usr/lib/python3.8/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
我使用的代码:
import csv
with open('Book1.csv') as f:
a=csv.reader(f)
for i in a:
print(i)
我什至试图将编码更改为latin1:
import csv
with open('Book1.csv',encoding='latin1') as f:
a=csv.reader(f)
for i in a:
print(i)
在那之后,我得到了这种类型的错误消息:
Traceback (most recent call last):
File "/root/Downloads/csvafa.py", line 4, in <module>
for i in a:
_csv.Error: line contains NUL
我是python的初学者
答案 0 :(得分:1)
当我们尝试编码无效的字符串时,会引发此错误。如果无法使用此编码(UTF-8)表示Unicode字符串,则python会引发UnicodeEncodeError。您可以尝试编码:“ latin-1”或“ iso-8859-1”。
import pandas as pd
dataset = pd.read_csv('Book1.csv', encoding='ISO-8859–1')
也可能是数据已压缩。看看这个answer。
答案 1 :(得分:0)
我会尝试以utf-8
的形式读取文件
另一个解决方案可能是this answer
它仍然很有可能是压缩数据。 gzip的幻数为
0x1f 0x8b
,与您获得的UnicodeDecodeError
一致。您可以尝试动态解压缩数据:
with open('destinations.csv', 'rb') as fd: gzip_fd = gzip.GzipFile(fileobj=fd) destinations = pd.read_csv(gzip_fd)