我想阅读一个csv文件并处理一些列,但我一直在遇到问题.坚持以下错误:
Traceback (most recent call last):
File "C:\Users\Sven\Desktop\Python\read csv.py", line 5, in <module>
for row in reader:
File "C:\Python34\lib\codecs.py", line 313, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 446: invalid start byte
>>>
Run Code Online (Sandbox Code Playgroud)
我的守则
import csv
with open("c:\\Users\\Sven\\Desktop\\relaties 24112014.csv",newline='', encoding="utf8") as f:
reader = csv.reader(f,delimiter=';',quotechar='|')
#print(sum(1 for row in reader))
for row in reader:
print(row)
if row:
value = row[6]
value = value.replace('(', '')
value = value.replace(')', '')
value = value.replace(' ', '')
value = value.replace('.', '')
value = value.replace('0032', '0')
if len(value) > 0:
print(value + ' Length: ' + str(len(value)))
Run Code Online (Sandbox Code Playgroud)
我是Python的初学者,尝试使用谷歌搜索,但很难找到合适的解决方案.
谁能帮我吗?
.PNG 文件的第一个字节是 0x89。并不是说这是您的问题,但 .PNG 标头是专门设计的,因此它不会意外 解释为 text。
我不知道为什么你会拥有一个实际上是 .png 的 .csv 文件。但如果有人不小心重命名了文件,这种情况肯定会发生。在 Windows 10 上,我时不时地会不小心批量重命名文件,因为它们的复选框功能很愚蠢。为什么微软决定让台式机与平板电脑具有相同的 UI 控件是我的好主意......我不知道。
这是最重要的线索:
无效的起始字节
\x89正如评论中所建议的那样,不是无效的 UTF-8 字节。它是一个完全有效的连续字节。意思是如果它遵循正确的字节值,它会正确编码 UTF-8:
http://hexutf8.com/?q=0xc90x89
因此,要么您 (1) 没有您期望的 UTF-8 数据,要么 (2) 您有一些格式错误的 UTF-8 数据。Python 编解码器只是让您知道它\x89在序列中以错误的顺序遇到。
(更多关于连续字节的信息:http : //en.wikipedia.org/wiki/UTF-8#Codepage_layout)