UnicodeDecodeError: 'utf8' codec can T decode byte 0xc3 in position 0: unexpected end of data
Ich Schreibe ein code für die, die einen tweet, aber ich habe Probleme mit der Codierung. Als ich versucht habe anzuwenden, porter stemmer, es zeigt Fehler.Vielleicht habe ich m nicht in der Lage, die tokenisierung es richtig zu stellen.
Mein code ist wie folgt...
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)
Wenn ich versuche es auszuführen gibt den Fehler zurück:
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-10-5aa856d0307f> in <module>()
23 #train.SentimentText[i] = " ".join(t)
24 for word in nltk.word_tokenize(train.SentimentText[i]):
---> 25 t.append(stemmer.stem(word))
26 train.SentimentText[i] = ' '.join(t)
27
/usr/lib/python2.7/site-packages/nltk/stem/porter.pyc in stem(self, word)
631 def stem(self, word):
632 stem = self.stem_word(word.lower(), 0, len(word) - 1)
--> 633 return self._adjust_case(word, stem)
634
635 ## --NLTK--
/usr/lib/python2.7/site-packages/nltk/stem/porter.pyc in _adjust_case(self, word, stem)
602 for x in range(len(stem)):
603 if lower[x] == stem[x]:
--> 604 ret += word[x]
605 else:
606 ret += stem[x]
/usr/lib64/python2.7/encodings/utf_8.pyc in decode(input, errors)
14
15 def decode(input, errors='strict'):
---> 16 return codecs.utf_8_decode(input, errors, True)
17
18 class IncrementalEncoder(codecs.IncrementalEncoder):
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 0: unexpected end of data
jemand hat keine Ahnung, wat ist Los mit meinem code.Ich m stecken mit diesem Fehler.Irgendwelche Vorschläge..?
- Verwenden
python3
finden Sie unter youtube.com/watch?v=sgHbC6udIqc - Möglich, Duplikat der UnicodeDecodeError: 'utf8' codec kann nicht decodieren byte 0x9c
- Verwandte: stackoverflow.com/questions/19699367/... und stackoverflow.com/questions/12468179/...
- Um Ihnen zu helfen genau, konnte Sie nach dem Daten-set oder ein sample online. Ohne zu sehen, die Daten, es ist ein Schuss im Dunkeln, um zu wissen, was falsch gelaufen ist.
- SentimentText den text enthält, der eine tweet von twitter.
- Zu wissen, das genre des Textes nicht helfen, es sei denn, Sie sehen können und wissen, was ist die genaue Kodierung der Daten.
- Es scheint sehr wahrscheinlich, dass man sich mit latin-1-Kodierung, die außerhalb des ascii-und durch korrekte Codierung/Decodierung als utf8, Sie könnten das problem lösen, aber noch ohne zu sehen, die Daten, es ist nur zufällig erraten, was passiert ist =(
- Auch, beachten Sie, dass die "Sünde" des
sys.setdefaultencoding()
: stackoverflow.com/questions/3828723/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, der Schlüssel Linie 604, einen frame über dem Ort, die wirft den Fehler:
Wahrscheinlich
ret
ist eine Unicode-Zeichenfolge und dieword
ist ein byte-string. Und man kann Sie nicht Dekodieren von UTF-8-byte für byte, so dass die Schleife versucht, zu tun.Das problem ist, dass
read_csv
zurück bytes, und Sie versuchen, text-Verarbeitung auf diese bytes. Das funktioniert einfach nicht, diese bytes müssen decodiert werden, um Unicode-ersten. Ich denke, dass Sie verwenden können:Wenn möglich, verwenden Python 3. Dann versuchen zu verketten bytes und unicode wird immer ein Fehler, macht es viel einfacher zu erkennen, diese Probleme.