其他分享
首页 > 其他分享> > csv文件数据读取错误解决

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