Python turşu hatası: UnicodeDecodeError


93

Textblob kullanarak bazı metin sınıflandırması yapmaya çalışıyorum. Önce modeli eğitiyorum ve aşağıda gösterildiği gibi turşu kullanarak serileştiriyorum.

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()

Ve bu dosyayı çalıştırmayı denediğimde:

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

Bu hatayı alıyorum:

UnicodeDecodeError: 'utf-8' codec bileşeni, 0 konumunda 0x80 baytının kodunu çözemiyor: geçersiz başlangıç ​​baytı

Aşağıda sample.csv dosyamın içeriği verilmiştir:

SQL'im hiç düzgün çalışmıyor. Bu yanlış bir seçimdi, SQL

Sorunlarım var. Lütfen hemen cevap verin, Destek

Burada nerede yanlış yapıyorum? Lütfen yardım et.


Yanıtlar:


152

Moddaki opendosyayı wbseçerek, ham ikili olarak yazmayı seçmiş olursunuz. Uygulanan karakter kodlaması yok.

Bu nedenle bu dosyayı okumak openiçin modda olmanız gerekir rb.


wbTurşuyu kurtarırken kullanmanın bir nedeni var mı ? ya da turşuyu kurtarmak için rbmod ile açmayı gerektirmeyen bir mod var mı?
tsando

1
@tsando kullanıyorum wbçünkü henüz düzeltmediğim bazı sorunlar wturşu ile kullanmamı engelliyor . Dizeler yerine bayt yazmaktan şikayet ediyor.
GigaFLOP

Teşekkürler ... günümü kurtardınız
Kumar KS

27

Bence dosyayı şu şekilde açmalısın

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

Onu deşifre etmek zorunda değilsin. pickle.loadsize kaydettiğiniz şeyin tam bir kopyasını verecektir. Bu noktada, clsanki onu yaratmışsınız gibi çalışabilmelisiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.