最近小白在做中文情感分析的时候,经常使用到文件打开出错的问题,尝试了很多方式,都不成功,这里写下自己的新路历程。
1.首先,下面是正常的读文件代码
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r')
sen_list = sen_file.readlines()
报错如下:
网上随便搜,有一堆答案,接下来看下各种解决办法
2.修改编码方式
encoding改为UTF-8,有的小伙伴试到这一步,已经不需要继续了,问题完美解决
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r', encoding='UTF-8')
sen_list = sen_file.readlines()
有的依然会报上述问题,那么继续换编码方式:‘utf-8’换成‘gbk’
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r', encoding='gbk')
sen_list = sen_file.readlines()
若不能解决,可能是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r', encoding='gb18030')
sen_list = sen_file.readlines()
若仍不能解决,说明文中出现了连‘gb18030’也无法编码的字符,可以使用‘ignore’属性进行忽略,如:
但是这种方式只是规避了特殊字符,并没有完美解决
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r', encoding='gb18030',errors='ignore')
sen_list = sen_file.readlines()
3.终极方法
将txt文件用Notepad++打开,然后换编码方式为UTF-8
然后,语句encoding设置为UTF-8就可以了
sen_file = open('D:/Users/Downloads/BosonNLP_sentiment_score.txt','r', encoding='UTF-8')
sen_list = sen_file.readlines()