Pythonでは、str
型とbytes
型は2つの異なるデータ型で、連続した文字を表現します。str
型は不変のUnicode文字列で、話し言葉のテキスト文字を描写します。一方、bytes
型は生の、符号なしの8ビット値を含み、しばしばASCII(標準文字エンコーディング)で表示されます。
Python3では、文字列はすべてstr
型として扱われます。str
型では文字データをutf-8で扱います。どのような文字コードのテキストファイルでもPythonで扱うにはstr
型 (utf-8)に変換する必要があります。
Python3にはstr
型という文字列を扱うための組み込み型が用意されており、文字列はすべてstr
型の変数(もしくはリテラル)として扱われます。世の中には多くの文字コードがありますが、どのような文字コードのデータでもPython上で文字列として扱う場合には、str
型に変換して扱う必要があります。
また、Pythonで文字列の取り扱いを理解するのに必要なのがbytes
型と呼ばれる組み込み型です。bytes
型のデータはバイトデータと呼ばれ、いわゆるバイナリデータのことです。
以下に、str
型からbytes
型への変換、そしてbytes
型からstr
型への変換の例を示します。
# strからbytesへの変換
s = 'あいう'
b = s.encode('utf-8') # utf-8のバイト列
print(b) # => b'\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86'
# bytesからstrへの変換
s = b.decode('utf-8')
print(s) # => 'あいう'
このように、Pythonのstr
型とbytes
型を理解し、適切に使い分けることで、さまざまな文字コードのデータを効率的に扱うことができます。