2019-08-12 Python3 'utf-8' codec can't decode byte 0xa8 in position 986

注意Excel转Tab-txt时,文本的编码方式可能不同

最近编写了一个Python脚本用于从网页抓取特定的数据,
输入为Tab键分隔的7列的文本文件
该文本文件从excel中直接另存为Tab键分隔的TXT文本
**在读取过程中,部分文件报错 UnicodeDecodeError **

#!/usr/bin/env python3
...
infile = open('file.txt', 'rt')
html = infile.read()
...

报错:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 986: invalid start byte

Debug过程:

  1. 查看输入文件的编码方式
#!/usr/bin/env bash
file -i file.txt
file.txt: text/x-c; charset=iso-8859-1

发现执行成功的均为utf-8编码的文本文件,未执行成功的为:iso-8859-1
可能Excel会根据文本的特点,导出与内容相适应的编码格式的TXT文本,

  1. 查看系统默认的文本编码方式
#!/usr/bin/env python3
import sys
sys.getdefaultencoding()
'utf-8'
  1. 解决:改变输入文件的编码方式,使用windows自带的文本编辑工具,打开输入TXT文本,点击文件,另存,修改下方的Encoding编码方式,保存,即可。使用这种方法,可能会存在部分字符乱码的情况,我提取的内容与特殊的字符关系不大,所以没什么影响。


    txt

感觉这是最简单的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容