Python UnicodeDecodeError:&x27;utf8';编解码器可以';t解码位置0中的字节0xc3:数据意外结束
我正在写一个代码来阻止一条推特,但是我在编码方面遇到了问题。当我尝试应用波特词干分析器时,它显示错误。也许我不能正确地标记它 我的代码如下Python UnicodeDecodeError:&x27;utf8';编解码器可以';t解码位置0中的字节0xc3:数据意外结束,python,unicode,nltk,decode,tweetstream,Python,Unicode,Nltk,Decode,Tweetstream,我正在写一个代码来阻止一条推特,但是我在编码方面遇到了问题。当我尝试应用波特词干分析器时,它显示错误。也许我不能正确地标记它 我的代码如下 import sys import pandas as pd import nltk import scipy as sp from nltk.classify import NaiveBayesClassifier from nltk.stem import PorterStemmer reload(sys) sys.setdefaultencodin
import sys
import pandas as pd
import nltk
import scipy as sp
from nltk.classify import NaiveBayesClassifier
from nltk.stem import PorterStemmer
reload(sys)
sys.setdefaultencoding('utf8')
stemmer=nltk.stem.PorterStemmer()
p_test = pd.read_csv('TestSA.csv')
train = pd.read_csv('TrainSA.csv')
def word_feats(words):
return dict([(word, True) for word in words])
for i in range(len(train)-1):
t = []
#train.SentimentText[i] = " ".join(t)
for word in nltk.word_tokenize(train.SentimentText[i]):
t.append(stemmer.stem(word))
train.SentimentText[i] = ' '.join(t)
当我尝试执行时,它返回错误:
--> 604 ret += word[x]
UnicodeDecodeError回溯(最近一次呼叫上次)
在()
23#train.motiontext[i]=“join(t)
24对于nltk.word_标记化中的单词(训练文本[i]):
--->25 t.append(词干分析器.词干(word))
26.训练文本[i]=''.join(t)
27
/usr/lib/python2.7/site-packages/nltk/stem/porter.pyc in-stem(self,word)
631 def阀杆(自、字):
632词干=self.stem\u单词(word.lower(),0,len(word)-1)
-->633返回自调整外壳(字、杆)
634
635##--NLTK--
/usr/lib/python2.7/site-packages/nltk/stem/porter.pyc(self、word、stem)
602对于范围内的x(透镜(阀杆)):
603如果下部[x]==阀杆[x]:
-->604 ret+=字[x]
605其他:
606 ret+=阀杆[x]
/解码中的usr/lib64/python2.7/encodings/utf_8.pyc(输入,错误)
14
15 def解码(输入,错误='strict'):
--->16返回编解码器。utf_8_解码(输入,错误,真)
17
18类递增编码器(编解码器.递增编码器):
UnicodeDecodeError:“utf8”编解码器无法解码位置0中的字节0xc3:数据意外结束
任何人都有线索,我的代码有问题。我被这个错误缠住了。有什么建议吗 我认为关键线是604,在引起错误的地方上方一帧:
--> 604 ret += word[x]
可能ret
是一个Unicode字符串,word
是一个字节字符串。你不能像那个循环试图做的那样,一个字节一个字节地解码UTF-8
问题是read\u csv
返回字节,而您正试图对这些字节进行文本处理。这根本不起作用,必须先将这些字节解码为Unicode。我认为你可以使用:
pandas.read_csv(filename, encoding='utf-8')
如果可能,请使用Python 3。然后尝试连接字节和unicode总是会引发错误,从而更容易发现这些问题。使用
python3
,查看相关的可能重复:为了准确地帮助您,您可以在线发布数据集或示例吗。如果看不到数据,就很难知道出了什么问题。@alvis ConferenceText包含来自twitter的一条推文。