今回は、PythonのStringからbytesへの変換と、PythonのbytesからStringへの変換について見ていきましょう。
Pythonの型変換は、データが異なる形で様々な操作の際に利用されるという特徴から、かなり重要視されるようになりました。
PythonのStringからbytesへの変換、bytesからStringへの変換は、ファイル操作の際に必要であることなどから、それなりの重要性を持っています。
Python の文字列をバイトに変換する
Pythonの文字列をbytesに変換するには、以下のどちらかの方法を使用します。
- bytes()` メソッドを使う。
- encode()` メソッドを使う。
1. Python の bytes() メソッドで文字列をバイトに変換する
Python の CPython ライブラリには、文字列をバイトに変換するための bytes() 関数が用意されています。
構文は以下の通りです。
bytes(input_string, 'utf-8')
|
注:エンコードのためにUTF-8形式を使用します。
例:
inp = "Engineering Discipline"
print("Input String:)
print(str(inp))
opt = bytes(inp, 'utf-8')
print("String after getting converted to bytes:)
print(str(opt))
print(str(type(opt)))
|
結果は以下の通りです。
Input String:
Engineering DisciplineString after getting converted to bytes:b'Engineering Discipline'
<class 'bytes'>
|
2. Pythonのencode()メソッドでStringをbyteに変換する
Pythonの encode() メソッドは、Stringをbyte形式に変換するためにも使うことができます。
構文は以下の通りです。
input_string.encode('utf-8')
|
例:
inp = "Engineering Discipline"
print("Input String:)
print(str(inp))
opt = inp.encode('utf-8')
print("String after getting converted to bytes:)
print(str(opt))
print(str(type(opt)))
|
結果は以下の通りです。
Input String:
Engineering DisciplineString after getting converted to bytes:b'Engineering Discipline'
<class 'bytes'>
|
Python のバイトを文字列に変換する
Pythonのbyteクラスには、Pythonのバイトを文字列に変換する decode() メソッドが組み込まれています。
構文は以下の通りです。
string.decode('utf-8')
|
例えば、以下の様になります。
inp = "Engineering Discipline"
print("Input String:)
print(str(inp))
opt = inp.encode('utf-8')
print("String after getting converted to bytes:)
print(str(opt))
print(str(type(opt)))
original = opt.decode('utf-8')
print("The decoded String i.e. byte to converted string:)
print(str(original))
|
上の例では、まずencode()メソッドで入力文字列をバイトに変換しています。
その後、decode()メソッドでエンコードされた文字列を元の文字列に変換している。
結果は以下の通りです。
Input String:
Engineering DisciplineString after getting converted to bytes:b'Engineering Discipline'
<class 'bytes'>
The decoded String i.e. byte to converted string:Engineering Discipline |
この記事もチェック:Pythonでtitleメソッドを使って小文字と大文字を変換する方法
Pandasのバイトを文字列に変換
Pandasモジュールには、Series.str.decode()`メソッドがあり、エンコードされたデータ(bytes形式)をString形式に変換することができます。
構文は以下の通りです。
input_string.decode(encoding = 'UTF-8')
|
例えば、以下の様になります。
import pandas
inp = pandas.Series([b"b'Jim'", b"b'Jonny'", b"b'Shawn'"])
print("Encoded String:")
print(inp)
opt = inp.str.decode(encoding = 'UTF-8')
print(")
print("Decoded String:")
print(opt)
|
上の例では、データがエンコードされていると仮定しています。
さらに、そのデータに対して操作を行う。
結果は、以下の通りになります。
Encoded String:0 b"b'Jim'"
1 b"b'Jonny'"
2 b"b'Shawn'"
dtype: object
Decoded String:0 b'Jim'
1 b'Jonny'
2 b'Shawn'
dtype: object
|
まとめ
この記事では、Pythonの文字列をバイトに変換する方法と、その逆のエンコードとデコードの概念について理解しました。