Bagaimana Mengendalikan Pengekodan UTF8 dalam Python Semasa Membaca Fail CSV?

Mary-Kate Olsen
Lepaskan: 2024-11-02 14:10:30
asal
431 orang telah melayarinya

How to Handle UTF8 Encoding in Python When Reading CSV Files?

Membaca Fail CSV UTF8 dengan Python

Fail CSV, yang biasa digunakan untuk pertukaran data, selalunya mengandungi aksara beraksen yang memerlukan pengekodan UTF8 untuk mengekalkan integritinya. Csvreader Python, bagaimanapun, hanya menyokong data ASCII.

Masalah

Apabila cuba membaca fail CSV UTF8 dengan aksara Perancis atau Sepanyol aksen, walaupun menggunakan kod untuk mengendalikan pengekodan UTF8, pengecualian berikut telah ditemui:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 68: ordinal not in range(128)
Salin selepas log masuk

Penyelesaian

Penyelesaian terletak pada pemahaman tujuan kaedah pengekodan. Ia menukar rentetan Unicode kepada rentetan bait, bukan sebaliknya. Dengan menggunakan modul codec dengan betul dan khususnya codecs.open untuk mengendalikan fail teks UTF8, kod boleh dipermudahkan:

<code class="python">import csv

def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
    csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
    for row in csv_reader:
        yield [unicode(cell, 'utf-8') for cell in row]

filename = 'da.csv'
reader = unicode_csv_reader(open(filename))
for field1, field2, field3 in reader:
  print field1, field2, field3 </code>
Salin selepas log masuk

Nota

Jika data input tiada dalam UTF8, seperti ISO-8859-1, kod tersebut memerlukan transcoding:

<code class="python">line.decode('whateverweirdcodec').encode('utf-8')</code>
Salin selepas log masuk

Walau bagaimanapun, ini selalunya tidak perlu kerana csv boleh mengendalikan rentetan bait berkod ISO-8859-* secara langsung.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengekodan UTF8 dalam Python Semasa Membaca Fail CSV?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!