Python 3におけるバイト文字列の基本
Python 3では、バイト文字列は通常の文字列とは異なり、バイトのシーケンスとして扱われます。これを作成するには、文字列リテラルの前に小文字の ‘b’ を付けます。この ‘b’ プレフィックスは、その文字列がASCIIエンコードされたバイト列であることを示します。バイト文字列は、ファイルのデータ処理やネットワーク通信など、バイナリデータを直接扱う場面で便利です。
バイト文字列と通常の文字列の違い
通常の文字列はUnicode文字列として扱われ、多様な文字セットをサポートしています。一方、バイト文字列は単なるバイトの列であり、直接的な文字の表現ではなくデータのバイト表現として機能します。これにより、エンコーディングやデコーディングのプロセスを明示的にコントロールする必要があります。
バイト文字列の作成
Pythonでバイト文字列を作成するには、文字列リテラルの前に ‘b’ を付けます。以下にいくつかの例を示します。
# 単純なバイト文字列 bytes1 = b'Hello, world!' print(bytes1) # 出力: b'Hello, world!' # ASCII以外の文字を含むバイト文字列の場合、Unicodeエスケープを使用 bytes2 = b'\xe3\x81\x82' print(bytes2) # 出力: b'\xe3\x81\x82' (これは日本語の「あ」のUTF-8エンコード) # バイト文字列を使ってファイルをバイナリモードで書き込み with open('sample.bin', 'wb') as file: file.write(b'\x00\x01\x02')
バイト文字列の操作
バイト文字列は、スライスやインデックスアクセスが可能ですが、その操作はバイト単位で行われます。
bytes3 = b'abcdef' print(bytes3[0]) # 出力: 97 (ASCIIコードで 'a') print(bytes3[2:5]) # 出力: b'cde'
これらの例からわかるように、バイト文字列は特定のデータ処理タスクにおいて非常に有用です。ただし、使用する際には、Unicode文字列とは異なる振る舞いに注意が必要です。