Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?

Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?

Patricia Arquette
Lepaskan: 2024-11-04 13:35:01
asal
1046 orang telah melayarinya

Why am I getting a UnicodeDecodeError: 'utf-8' codec can't decode byte when iterating through a text file?

"untuk baris masuk..." Keputusan dalam UnicodeDecodeError: Codec 'utf-8' Tidak Dapat Menyahkod Bait

Apabila cuba untuk lelaran melalui baris fail teks menggunakan sintaks "for line in open('filename')", pengaturcara mungkin menghadapi UnicodeDecodeError yang menunjukkan bahawa codec 'utf-8' tidak boleh menyahkod bait tertentu. Ralat ini biasanya berlaku apabila pengekodan fail teks tidak sepadan dengan pengekodan yang diandaikan oleh codec 'utf-8'.

Menyelesaikan Isu

Untuk menyelesaikan masalah ini ralat, adalah perlu untuk menentukan pengekodan yang betul bagi fail teks semasa membukanya. Ini boleh dicapai dengan menambahkan parameter "pengekodan=" pada fungsi open(), seperti yang dilihat di bawah:

<code class="python">for line in open('filename', encoding='utf-8'):
    # Read each line</code>
Salin selepas log masuk

Dalam sesetengah kes, pengekodan yang dinyatakan mungkin tidak betul, membawa kepada ralat yang sama. Untuk menentukan pengekodan yang sesuai, pengaturcara boleh memeriksa fail teks dan mengenal pasti set aksara yang digunakan.

Sebagai contoh, coretan kod yang disediakan oleh penyoal:

<code class="python">for line in open('u.item'):
    # Read each line</code>
Salin selepas log masuk

Gagal menyahkod fail teks kerana pengekodan telah salah diandaikan sebagai 'utf-8'. Dengan memeriksa fail teks, didapati pengekodan yang betul ialah "ISO-8859-1". Mengubah suai kod seperti berikut menyelesaikan isu:

<code class="python">for line in open('u.item', encoding='ISO-8859-1'):
    # Read each line</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa saya mendapat UnicodeDecodeError: codec \'utf-8\' tidak boleh menyahkod bait apabila melelaran melalui fail teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan