近日用pandas的read_csv读取中文文本文件时报错:python 'utf-8' codec can't decode byte 0xe3 in position 0: unexpected end of data。

看到错误以为是读取时encoding选择错误,某个二进制块无法用 'utf-8'读取,不应该选择 'utf-8'。于是将utf-8,gb2312,gb18030,gbk,utf-8-sig,cp936,big5等中文编码都试了一遍,还是没有解决错误。用编码ISO-8859-1读取没有报错,然而读取的是乱码。

要读取的文件,我事先知道是 'utf-8'。为了再次确认是否是 'utf-8',用如下代码进行了判断,结果竟然是none。用文本编辑器打开文件,将文件编码转换为 'utf-8',再次用如下代码进行判断,结果竟然还是none。

#方法一
import pandas as pd   import os  import chardetdef get_encoding(filename): """ 返回文件编码格式,因为是按行读取,所以比较适合小文件""" with open(filename,'rb') as f: return chardet.detect(f.read())['encoding']original_file = r"G:\data.txt"print(get_encoding(original_file))
#结果是None#方法二
from chardet.universaldetector import UniversalDetectororiginal_file = r"G:\data.txt"usock = open(original_file, 'rb')
detector = UniversalDetector()
for line in usock.readlines():detector.feed(line)if detector.done: break
detector.close()
usock.close()
print (detector.result)#返回结果竟然是{'encoding': None, 'confidence': 0.0, 'language': None}
#chardet不可能总是正确的猜测。如果你需要正确处理样本,你真的需要知道它们的编码#方法三
#notepad++右下角也能看到编码,结果是utf-8

说明,文件的部分数据有问题,在网上找了很多方法,都不能解决问题。

随后,用如下代码找到了错误出现的行,错误出现在最后一行。

f = open(r"G:\data.txt","rb")#二进制格式读文件
while True:line = f.readline()if not line:breakelse:try:line.decode('utf-8')except:print(str(line))

重新看报错原因,才发现“unexpected end of data”,这不也是在说最后一行吗?

观察了下最后一行的数据,文件有6列数据,然而最后一行只有3列数据,最后3列数据为空,手动将最后3列数据补全,问题解决。

总结:仔细读报错原因,报错原因其实已经告诉了解决思路。找出导致出错所在的代码行或数据行,不要瞎试。

Pandas读取中文文本文件报错:python ‘utf-8‘ codec can‘t decode byte 0xe3 in position 0: unexpected end of data相关推荐

  1. python 读取文件报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0: invalid start

    python 读取文件报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start ...

  2. 【pd读取csv文件踩坑】读取csv文件时报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0

    写在前面: 由于CSDN的审查机制的原因,更多博客内容请访问我的个人博客或GitHub: 个人博客地址:个人博客 GitHub地址:GitHub 你是否有过之前用pd.read打开csv文件都正常,但 ...

  3. pd.read_csv报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin

    报错代码: data = pd.read_csv('90data.csv') # 读取数据 解决方案: data = pd.read_csv('90data.csv', encoding= 'ISO- ...

  4. 因为编码产生的报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbd in position 0: invalid start byte

    发生此报错多半是因为编码. 我这里是在读取txt文本的时候发生的报错,如下: 修改编码为gbk后,就可以正常读取了:

  5. gensim加载word2vec模型报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid

    这句话是一个很常见的错误,是在加载gensim预训练的word2vec模型时的报错, 当时查资料找到加载模型应该用 model = KeyedVectors.load_word2vec_format( ...

  6. python打开xml文件报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xb7 in position 58: illegal multi

    本篇文章主要讲解,python打开xml文件报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xb7 in position 58: ille ...

  7. python报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa3 in position 48

    python报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa3 in position 48: illegal multibyte s ...

  8. python报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xaf in position 解决方案

    原代码 data_path = "sources/weibo_senti_100k.csv" data_list = open(data_path).readlines()[1:] ...

  9. anaconda -spyder报错解决-UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 611: illegal

    此文首发于我的个人博客:anaconda -spyder报错解决-UnicodeDecodeError 'gbk' codec can't decode byte 0x93 in position 6 ...

最新文章

  1. HTML和CSS基础知识
  2. Android USB Host与HID通讯(二)
  3. jBPM4工作流开发实战 之 第五部分 其他知识
  4. 设计模式学习笔记六:.NET反射工厂
  5. antimalware可以关闭吗_iPhone最好关闭这4个设置,手机流畅还省电
  6. linux部署tomcat项目404_Tomcat部署项目的几种常见方式
  7. 画面风格写实的飞鸽传书
  8. 跨越语言障碍!哈工大联合MSRA提出多任务、多模态、多语言的统一预训练模型M3P (CVPR 2021)...
  9. 信安精品课:第7章访问控制技术原理与应用精讲笔记
  10. 什么是阿里云服务器系统盘和数据盘?
  11. 喜庆普通铁路也要跑动车了
  12. 14.6.211213163AWVS扫描器破解流程
  13. html登录页面验证码代码怎么写,js实现登录验证码
  14. 【转】扫盲 同步利器、分布式网盘--BT Sync
  15. **python入门实战**-华氏度转摄氏度python代码
  16. 天朝理工学院SQL脚本
  17. Android Studio中关于消除“Permission is only granted to system apps”错误的方法
  18. 【4分频电路 -verilog】
  19. 本周内外盘行情回顾2022.3.6
  20. 快速web开发框架——learun framework

热门文章

  1. 最长上升子序列(LIS) nlogn解法
  2. oracle tranc,oracle函数trunc的使用
  3. java 假设当前时间_java——推断日期是否在今天之前
  4. python定义字符串1hdhdjdjd_python基础总结(字符串)
  5. 计算机基础考试系统怎么使用,计算机基础课程考试系统使用说明.doc
  6. matlab 蜂窝网格,blender怎么制作蜂巢网格 蜂窝式网格画法
  7. 全国计算机等级考试培训方案,第23次全国计算机等级考试培训安排.doc
  8. 登录功能和公聊功能的实现
  9. movsb和movsw
  10. Oracle存储过程以及游标