bytes, bytearray
ググってみると、文字列に関する型というよりは、バイナリデータを扱う型でした。
まとめてバイナリシーケンスとも呼ばれます。
0~255の整数のみが要素になります。
bytes | イミュータブル(値の変更不可) |
---|---|
bytearray | ミュータブル(値の変更可能) |
bytes型
・bytes型の生成
リテラル | b"..." |
bytes()関数 | |
文字列.encode()メソッド |
b1 = b"abc" print(b1) # b'abc' print(type(b1)) # <class 'bytes'> b2= bytes("def", encoding="shift_jis") print(b2) # b'abc' print(type(b2)) # <class 'bytes'> b3 = "ghi" b3 = b3.encode("utf-8") print(b3) # b'ghi' print(b3[1]) # 104 b3 = b3.decode("utf-8") print(b3) # ghi print(b3[1]) # h
日本語エンコード名
エンコード名 | pythonでの名 |
シフトJIS | shift-jis, shift_jis, sjis |
ISO-2022-JP(JIS) | iso-2022-jp |
EUC-JP | euc-jp |
UTF-8 | utf-8 |
変換エラーに対するオプション
文字列 | 説明 |
strict | エラーを発生して変換停止。デフォルト |
replace | 変換できない文字を「?」などで表示し、変換は続ける。 |
ignore | 変換できない文字はスルーして、変換を続ける。 |
bytearray型
ba1 = bytearray(b"abc") ba2 = bytearray("abc".encode()) print(ba1, ba2) # bytearray(b'abc') bytearray(b'abc') print(ba1[0]) # 97 # ba3 = bytearray(b"いろは") # SyntaxError: bytes can only contain ASCII literal characters. ba3 = bytearray("いろは".encode()) print(ba3) # bytearray(b'\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf') print(ba3[6]) # 227 print(ba3.decode()) # いろは
バイナリデータを扱う予定はまだないので、ゆっくり調べます。