2013-07-12 48 views
106

Ví dụ, tôi có một chuỗi như thế này (trở về giá trị của subprocess.check_output):Làm thế nào để chuyển đổi 'chuỗi nhị phân' thành chuỗi bình thường trong Python3?

>>> b'a string' 
b'a string' 

Dù tôi đã làm với nó, nó luôn luôn được in với gây phiền nhiễu b' trước chuỗi:

>>> print(b'a string') 
b'a string' 
>>> print(str(b'a string')) 
b'a string' 

Có ai có bất kỳ ý tưởng về cách sử dụng nó như là một chuỗi bình thường hoặc chuyển đổi nó thành một chuỗi bình thường?

Trả lời

150

Giải mã.

>>> b'a string'.decode('ascii') 
'a string' 

Để nhận byte từ chuỗi, mã hóa nó.

>>> 'a string'.encode('ascii') 
b'a string' 
+4

người vẫn sử dụng ascii vào năm 2015 ??? – lyomi

+8

@lyomi, tôi đã sử dụng 'ascii' bởi vì chuỗi đã cho được tạo bằng chữ cái ascii. Bạn không cần phải chỉ định mã hóa nếu mã hóa là 'utf-8' (mặc định bằng Python 3.x theo' str.encode', 'bytes.decode' doc-string) – falsetru

+2

@lyomi Trong năm 2016 (và cuối cùng) mọi người vẫn sử dụng ascii. Có rất nhiều sản phẩm và hệ thống 'cũ' (bao gồm cả thông số kỹ thuật), nhưng cũng có nhiều lý do tại sao bạn có thể tạo 'chuỗi nhị phân', nơi bạn không muốn unicode hoặc một cái gì đó để thử và 'hợp nhất' nhiều byte vào một nhân vật duy nhất. Chúng tôi thường sử dụng 'chuỗi' để chứa dữ liệu nhị phân, ví dụ như thực hiện yêu cầu DNS, v.v. – Jmons

25

Nếu câu trả lời từ falsetru đã không làm việc bạn cũng có thể thử:

>>> b'a string'.decode('utf-8') 
'a string' 
Các vấn đề liên quan