csv文件数据读取错误解决
作者:互联网
事情是这样的:
我想要打开一个csv文件,结果显示如下错误:
with open("validation.csv", "r") as f:
n = 1
for row in f:
n+=1
if n==100:
break
print(type(row))
print(row)
# output:
# UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 502: illegal multibyte sequence
然后百度一下,找到的解决方案是:加了一个参数b,但是同样不行
with open("validation.csv", "rb") as f:
#output
#<class 'bytes'>
#b'\xe5\x90\x8e\xe6\x9d\xa5\xe5\x8f\x88\xe5\x8e\xbb\xe4\xba\x86\xe4\xb8\x80\xe6\xac\xa1\xef\xbc\x8c\xe5\x8d\x95\xe7\x82\xb9\xe7\x9a\x84\xe8\x80\x8c\xe6\xb2\xa1\xe7\x82\xb9\xe5\xa5\x97\xe9\xa4\x90\xef\xbc\x8c\xe6\x8e\xa8\xe8\x8d\x90 \xe3\x80\x90\xe7\x89\x9b\xe8\x82\x89\xe3\x80\x91\xef\xbc\x8c\xe9\xa6\x99\xe8\xbe\xa3\xe5\x91\xb3\xe8\x85\x8c\xe5\x88\xb6\xe8\xbf\x87\xe7\x9a\x84\xef\xbc\x8c\xe6\xb6\xae\xe6\xb6\xae\xe5\xbe\x88\xe6\xbb\x91\xe5\xab\xa9\xe3\x80\x82\n'
所以接着改:这回倒是可以显示中文了
print(row.decode())
#后来又去了一次,单点的而没点套餐,推荐 【牛肉】,香辣味腌制过的,涮涮很滑嫩。
但是由于这是从csv里提取数据,但是行内有换行符,所以得处理一下行内的换行符,百度一下发现使用:
reader = csv.reader(f)
for row in reader:
但是新的错误是:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
接着改:
with open("validation.csv", "rt") as f:
#'gbk' codec can't decode byte 0xa6 in position 502: illegal multibyte sequence
又出错了,再改:
with open("validation.csv", "rt",encoding="utf-8") as f:
这回好像要可以,只是上面输出的是row.decode(),但是此时row是list了,所以删掉decode()。
最后的代码:
with open("validation.csv", "rt",encoding="utf-8") as f:
n = 1
reader = csv.reader(f)
for row in reader:
n+=1
if n==100:
break
print(type(row))
print(row)
#output:['87', '"一直想拔的很久的草,正好在珠江路地铁站附近,想着大叻很近就决定来感受一次!\n"', '1', '-2', '-2', '-2', '0', '-2', '-2', '-2', '-2', '0', '1', '-2', '-1', '-2', '0', '0', '-1', '-2', '1', '1']
起码数据显示全了,至于行内的换行符和其他字符用正则处理一下就好了。
标签:读取,错误,xe5,xe6,reader,csv,xe8,row 来源: https://blog.csdn.net/weixin_41179697/article/details/113052344