Menukar Rentetan kepada Bait dalam Python 3
Ralat "TypeError: 'str' tidak menyokong antara muka penimbal" yang tidak dapat dielakkan sering timbul apabila cuba menukar rentetan kepada bait. Untuk menangani isu ini, dua kaedah utama dicadangkan:
b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')
Kaedah manakah yang dianggap lebih Pythonic?
Bytes dan Bytearrays
Rujuk dengan Dokumentasi Python untuk bait. Ambil perhatian bahawa ia mengarahkan anda kepada bytearray, yang mempunyai tujuan yang lebih luas daripada pengekodan rentetan semata-mata.
bytearray([source[, encoding[, errors]]])
Bytearray memulakan jujukan integer boleh ubah daripada pelbagai sumber, termasuk rentetan:
Pertimbangan Python
Untuk mengekod rentetan, some_string.encode(encoding) dianggap lebih Pythonic . Penggunaan kaedah encode() dengan jelas menyatakan niat untuk mengubah rentetan input menjadi bait menggunakan pengekodan tertentu. Pembina bytes(), walaupun sesuai untuk operasi yang lebih komprehensif, adalah kurang eksplisit dalam senario ini.
Tambahan pula, unicode_string.encode(encoding) mencerminkan simetri byte_string.decode(encoding) untuk menukar bait kembali kepada rentetan , meningkatkan kebolehbacaan dan ketekalan kod.
Dalaman Pelaksanaan
Pelaksanaan CPython menukar rentetan Unicode kepada bait menggunakan PyUnicode_AsEncodedString, yang pada asasnya menggunakan kaedah encode() secara dalaman. Oleh itu, memanggil encode() secara langsung menjimatkan langkah tambahan.
Atas ialah kandungan terperinci Python String to Bytes: `bait()` lwn. `encode()` — Manakah Lebih Pythonic?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!