Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyelesaikan UnicodeDecodeError Apabila Mengulang Melalui Fail Teks?

Bagaimana untuk Menyelesaikan UnicodeDecodeError Apabila Mengulang Melalui Fail Teks?

Barbara Streisand
Barbara Streisandasal
2024-11-03 11:30:29747semak imbas

How to Resolve UnicodeDecodeError When Iterating Through Text Files?

Menyelesaikan masalah UnicodeDecodeError dengan "for line in..." Iterator

Apabila bekerja dengan fail teks, pembangun sering menggunakan iterator seperti "for line dalam..." untuk membaca dan memproses setiap baris fail. Walau bagaimanapun, kadangkala ini boleh menyebabkan UnicodeDecodeError yang mengecewakan.

Masalah:

Pertimbangkan kod berikut:

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

Apabila menjalankan kod di atas , anda mungkin menghadapi ralat berikut:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

Ralat ini berlaku apabila Python cuba mentafsir bait dalam fail menggunakan pengekodan UTF-8 tetapi menemui bait yang tidak mematuhi piawaian UTF-8 .

Penyelesaian:

Penyelesaian kepada masalah ini terletak pada menentukan pengekodan yang betul untuk fail. Dalam kes ini, fail dikodkan dalam ISO-8859-1, yang merupakan skema pengekodan aksara yang berbeza daripada UTF-8.

Untuk membetulkan ralat, nyatakan pengekodan semasa membuka fail:

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

Dengan menggantikan pengekodan lalai 'utf-8' dengan 'ISO-8859-1', pengekodan aksara yang betul digunakan untuk menyahkod bait dalam fail, menyelesaikan UnicodeDecodeError.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan UnicodeDecodeError Apabila Mengulang Melalui Fail Teks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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