web-dev-qa-db-fra.com

Python: UnicodeDecodeError

J'essaie de faire une classification de texte en utilisant Textblob. Je commence par former le modèle et à le sérialiser à l'aide de cornichons, comme indiqué ci-dessous.

import pickle
from textblob.classifiers import NaiveBayesClassifier

with open('sample.csv', 'r') as fp:
     cl = NaiveBayesClassifier(fp, format="csv")

f = open('sample_classifier.pickle', 'wb')
pickle.dump(cl, f)
f.close()

Et quand j'essaye de lancer ce fichier:

import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)    
f.close()

Je reçois cette erreur:

UnicodeDecodeError: le codec 'utf-8' ne peut pas décoder l'octet 0x80 en position 0: octet de début non valide

Voici le contenu de mon sample.csv:

Mon SQL ne fonctionne pas du tout correctement. C'était un mauvais choix, SQL

J'ai des problèmes. S'il vous plaît répondre immédiatement, Support

Où est-ce que je vais mal ici? S'il vous plaît aider.

64
90abyss

En choisissant de open le fichier en mode wb, vous choisissez d'écrire en binaire brut. Aucun codage de caractères n'est appliqué.

Ainsi, pour lire ce fichier, vous devriez simplement open en mode rb.

108
donkopotamus

Je pense que vous devriez ouvrir le fichier en tant que

f = open('sample_classifier.pickle', 'rb')
cl = pickle.load(f)   

Vous ne devriez pas avoir à le décoder. pickle.load vous donnera une copie exacte de tout ce que vous avez sauvegardé. À ce stade, vous devriez pouvoir travailler avec cl comme si vous veniez de le créer.

21
saulspatz