python3编码问题--文本格式指定错误

背景:想模拟实验一下文本情感分析,下载完语料,因为语料是一个评论一条,所以需要将所有评论整合到一个文件中,在读取每个文件时,出现了编码的问题,如下
问题:UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte
大概错误意思:   unicode解码错误:无法解码成‘utf-8’,在位置0处有非法的开始字节

原始代码:

    with open('/home/hadoop/桌面/情感分析尝试2/ChnSentiCorp_htl_ba_2000/neg/neg.0.txt','r') as nf:
        comments = nf.readlines()
        print(comments[0])

错因:python默认的文件打开编码是utf-8,而我下载的文件并不是utf-8格式的。

于是费尽心思修改文件格式,无果。

解决:

with open('/home/hadoop/桌面/情感分析尝试2/ChnSentiCorp_htl_ba_2000/neg/neg.0.txt','r',encoding='gbk') as nf:
        comments = nf.readlines()
        #print(comments)
添加了encoding = 'gbk'。顺利得到文字,并且将其导入另一个文件,也能得到utf-8的文件(python3默认utf-8)
曲折:使用linux的file查看文件编码时,显示latin1,将encoding = 'latin1',没有编码错误,但是得到的且不是文字。之后想到,尝试用encoding = 'gbk' ,果然成功。

python输出默认编码、输入编码、输出编码、错误编码的编码格式
import sys
sys.getdefaultencoding()
sys.stdin.encoding
sys.stdout.encoding
sys.stderr.encoding
linux系统查看文件编码格式:
file --mime-encoding filename
python3文档
http://python3-cookbook.readthedocs.io/zh_CN/latest/c05/p01_read_write_text_data.html

你可能感兴趣的:(python3编码问题--文本格式指定错误)