Ini kode saya,
for line in open('u.item'):
#read each line
setiap kali saya menjalankan kode ini, ia memberikan kesalahan berikut:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Saya mencoba menyelesaikan ini dan menambahkan parameter tambahan di open (), kodenya terlihat seperti;
for line in open('u.item', encoding='utf-8'):
#read each line
Tapi sekali lagi ini memberikan kesalahan yang sama. apa yang harus saya lakukan! Tolong bantu.
python
python-3.x
character-encoding
SujitS
sumber
sumber
Jawaban:
Seperti yang disarankan oleh Mark Ransom , saya menemukan pengkodean yang tepat untuk masalah itu. Enkode dulu
"ISO-8859-1"
, jadi menggantiopen("u.item", encoding="utf-8")
denganopen('u.item', encoding = "ISO-8859-1")
akan menyelesaikan masalah.sumber
chardet
. Inilah satu-kapal (setelahimport chardet
):chardet.detect(open(in_file, 'rb').read())['encoding']
. Lihat jawaban ini untuk detailnya: stackoverflow.com/a/3323810/615422Juga berhasil untuk saya, ISO 8859-1 akan banyak menghemat, hahaha, terutama jika menggunakan Speech Recognition API
Contoh:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
sumber
File Anda sebenarnya tidak berisi data yang dikodekan utf-8, itu berisi beberapa pengkodean lainnya. Cari tahu apa itu encoding dan gunakan dalam
open
panggilan.Dalam pengkodean Windows-1252 misalnya,
0xe9
akan menjadi karakteré
.sumber
Coba ini untuk membaca menggunakan panda
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
sumber
Jika Anda menggunakan
Python 2
solusi berikut ini:import io for line in io.open("u.item", encoding="ISO-8859-1"): # do something
Karena
encoding
parameter tidak berfungsiopen()
, Anda akan mendapatkan kesalahan berikut:sumber
Python 2
'ISO-8859-1'
juga dikenal sebagai'latin-1'
atau'latin1'
.Anda dapat menyelesaikan masalah dengan:
for line in open(your_file_path, 'rb'):
'rb' sedang membaca file dalam mode biner. Baca lebih lanjut di sini . Semoga ini bisa membantu!
sumber
Ini bekerja:
open('filename', encoding='latin-1')
atau:
open('filename',encoding="ISO-8859-1")
sumber
Anda bisa mencoba cara ini:
open('u.item', encoding='utf8', errors='ignore')
sumber
Jika seseorang mencari ini, ini adalah contoh untuk mengonversi file CSV dengan Python 3:
try: inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"') except IOError: pass
sumber
Terkadang ketika
open(filepath)
yangfilepath
sebenarnya bukan file akan mendapatkan kesalahan yang sama, jadi pertama-tama pastikan file yang Anda coba buka ada:import os assert os.path.isfile(filepath)
semoga ini bisa membantu.
sumber