Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Menukar Objek Bytes kepada String dalam Python 3?

Bagaimanakah Saya Menukar Objek Bytes kepada String dalam Python 3?

DDD
DDDasal
2024-12-26 02:49:11618semak imbas

How Do I Convert a Bytes Object to a String in Python 3?

Menukar Bait kepada String dalam Python 3

Masalah:

Anda telah menangkap output standard program luaran ke dalam objek bait dan perlu memaparkannya sebagai rentetan. Contohnya:

import subprocess
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
stdout, _ = p.communicate()

Ini akan menghasilkan objek bait seperti:

b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n' 

Matlamat anda adalah untuk menukar objek bait ini kepada rentetan Python standard.

Penyelesaian:

Untuk menukar objek bait stdout kepada rentetan dalam Python 3, gunakan kaedah decode(). Kaedah ini mengambil pengekodan objek bait sebagai hujah. Begini cara untuk melakukannya:

decoded_stdout = stdout.decode("encoding")

Memilih Pengekodan:

Parameter pengekodan menentukan set aksara yang digunakan untuk menyahkod bait. Dalam contoh yang diberikan, UTF-8 diandaikan sebagai pengekodan lalai. Walau bagaimanapun, adalah penting untuk menggunakan pengekodan sebenar data anda.

Jika anda tidak mengetahui pengekodan, anda boleh cuba menggunakan "utf-8". Sebagai alternatif, anda boleh menggunakan perpustakaan seperti chardet untuk mengesan pengekodan secara automatik.

Contoh:

Menggunakan UTF-8 sebagai pengekodan yang diandaikan:

decoded_stdout = stdout.decode("utf-8")

Kini anda boleh mencetak rentetan yang dinyahkod anda:

print(decoded_stdout) 
# Output:
# -rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1

Atas ialah kandungan terperinci Bagaimanakah Saya Menukar Objek Bytes kepada String dalam Python 3?. 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