Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python UnicodeDecodeError:&x27;utf8';编解码器可以';t解码位置0中的字节0xc3:数据意外结束_Python_Unicode_Nltk_Decode_Tweetstream - Fatal编程技术网

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的一条推文。