Pythonでバイトリテラルを文字列に変換する方法|decode()の使い方を解説
バイトリテラル(bytesオブジェクト)をPythonの文字列(str)に変換するには、デコード処理が必要です。最も基本的な方法は、bytesオブジェクトが持つ decode() メソッドを使うことです。
decode()メソッドを使った変換
decode() メソッドには、バイト列のエンコーディング(文字コード)を指定します。以下は、UTF-8でエンコードされたバイトリテラルを文字列に変換する例です。
>>> b"abcde".decode("utf-8")
'abcde'
このように、バイトリテラル b"abcde" が通常の文字列 'abcde' に変換されます。なお、エンコーディングの指定を省略した場合、デフォルトとしてUTF-8が使用されます。
また、デコードできない不正なバイトが含まれる可能性がある場合は、第2引数の errors を指定すると便利です。たとえば decode("utf-8", errors="ignore") とすると、デコードできないバイトを無視して処理を続行できます。
ASCIIコードの数値リストを文字列に変換する方法
バイト列がASCIIエンコーディングの数値(0〜127)として表されている場合は、chr() 関数と map() を組み合わせて文字列に変換することもできます。
byte_list = [112, 52, 52]
print("".join(map(chr, byte_list)))
出力結果
p44
リスト内の各数値は対応するASCII文字(112 → "p"、52 → "4")に変換され、join() によって連結され、1つの文字列「p44」が出力されます。
なお、変数名に組み込み型の bytes を使うと、本来のbytes型を上書きしてしまうため避けましょう。上記の例では byte_list のような名前を使用しています。
-
Python 3で文字列をバイト列に変換する方法【encode()の使い方を解説】
Python 3で文字列をバイト列に変換する方法 Python 3で文字列(str型)をバイト列(bytes型)に変換するには、文字列クラスが標準で持っている encode() メソッドを使用します。最も一般的なのは、エンコーディングとして utf-8 を指定する方法です。 基本的な使い方 >>> s = uHellΘ WΘrld >>> s.encode(utf-8) bHell\xce\x98 W\xce\x98rld この例では、Unicode文字「Θ」がUTF-8でエンコードされ、2バイトのシーケンス \xce\x98 に変換されています。戻り値には
-
Pythonで2つの文字列を結合して1つにまとめる方法:+演算子とjoin()メソッドの使い方
Pythonで文字列を結合する基本:+演算子Pythonで2つの文字列を1つに結合するには、連結演算子「+」を使用します。最もシンプルでよく使われる方法です。以下の例を見てみましょう。str1 = Hello str2 = World str3 = str1 + str2 print(str3)このコードを実行すると、次の出力が得られます。HelloWorldこのように、+演算子を使えば、2つの文字列がそのまま順番に連結され、新しい1つの文字列として生成されます。複数の文字列を結合する:join()メソッド3つ以上の文字列をまとめて結合したい場合や、要素の間に区切り文字を挿入したい場合は、st