Python 文字列の前の ab プレフィックスはどういう意味ですか? 質問する

Python 文字列の前の ab プレフィックスはどういう意味ですか? 質問する

偶然見つけたPythonのソースコードの中に、小さなb次のような文字列の前に:

b"abcdef"

私は知っているuユニコード文字列を表す接頭辞とr生の文字列リテラルのプレフィックス。

bは、プレフィックスのないプレーンな文字列とまったく同じように見えますが、何の略語であり、どのような種類のソース コードで役立ちますか?

ベストアンサー1

接頭b辞はbytes文字列リテラル

Python 3のソースコードで使用されているのを見ると、この式はbytes物体、定期的ではないUnicodestrオブジェクトPython シェルにエコーされたり、リスト、辞書、その他のコンテナ コンテンツの一部として表示されたりする場合は、bytesこの表記法を使用して表現されたオブジェクトが表示されます。

bytesオブジェクトは基本的に0~255の範囲の整数のシーケンスを含みますが、表現されるとき、Pythonはこれらのバイトを次のように表示します。ASCII コードポイント内容を読みやすくするためです。印刷可能ASCII文字の範囲はエスケープシーケンスとして表示されます(例:\n\x82など)。逆に、ASCII文字とエスケープシーケンスの両方を使用してバイト値を定義することもできます。ASCII値の場合は数値が使用されます(例:b'A'== b'\x41'

bytesオブジェクトは整数のシーケンスで構成されているためbytes、リストのように、0 ~ 255 の範囲の値を持つ他の任意の整数のシーケンスからオブジェクトを構築できます。

bytes([72, 101, 108, 108, 111])

インデックス付けすると整数が返されます(ただしスライスすると新しいbytes値が生成されます。上記の例では、value[0]が返されます72が、72は大文字のASCIIコードポイントであるためですvalue[:1]b'H'H)。

bytesモデルバイナリデータ、 含むエンコードされたテキスト値にテキストが含まれている場合はbytes、まず正しいコーデックを使用してデコードする必要があります。たとえば、データが UTF-8 としてエンコードされている場合は、次のようstrにして Unicode 値を取得できます。

strvalue = bytesvalue.decode('utf-8')

逆に、strオブジェクト内のテキストからbytesエンコード使用するエンコーディングを決定する必要があります。デフォルトでは UTF-8 が使用されますが、必要なものは使用事例によって大きく異なります。

bytesvalue = strvalue.encode('utf-8')

bytes(strvalue, encoding)同じことをコンストラクターを使用して行うこともできます。

デコードとエンコードの両方のメソッドは、追加の引数を取ります。エラーの処理方法を指定する

Python 2 バージョン 2.6 および 2.7 では、文字列リテラルb'..'構文を使用した文字列リテラルの作成もサポートされており、Python 2 と 3 の両方で動作するコードの作成が容易になります。

bytesオブジェクトは文字列と同様に不変ですstrbytearray()物体変更可能なバイト値が必要な場合。

おすすめ記事