2013-07-12 18 views
106

例えば、私はこのような文字列(subprocess.check_outputの戻り値)している:Python3で 'binary string'を通常の文字列に変換するには?

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

私はそれをやったものは何でもが、それは常に文字列の前に迷惑なb'が印刷されている:

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

誰もそれを通常の文字列として使用する方法や通常の文字列に変換する方法についてのアイデアはありますか?

答えて

150

デコードしてください。

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

文字列からバイトを取得するには、それをエンコードします。

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

人々はまだ2015年にASCIIを使用します? – lyomi

+8

@lyomi、与えられた文字列がアスキー文字で作られていたので、私は 'ascii'を使いました。エンコーディングが 'utf-8'(エンコードの' str.encode'、bytes.decode' doc-stringのデフォルト) – falsetru

+2

@lyomiで2016年に終わり)人々はまだasciiを使用します。多くの「レガシー」製品やシステム(仕様を含む)がたくさんありますが、ユニコードや何かを試して複数のバイトを「マージ」したくない場合には、バイナリ文字列を作成する理由がたくさんあります。単一の文字。私たちはしばしば、DNS要求などを作成するためにバイナリデータを格納するために '文字列'を使用します。 – Jmons

25

falsetruからの答えは動作しなかった場合、あなたも試みることができる:

>>> b'a string'.decode('utf-8') 
'a string' 
関連する問題