Pythonで文字列をバイトに、バイトを文字列へ変換する方法

スポンサーリンク

今回は、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 Discipline
String 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 Discipline
String 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 Discipline
String after getting converted to bytes:
 
b'Engineering Discipline'
<class 'bytes'>
The decoded String i.e. byte to converted string:
 
Engineering Discipline

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の文字列をバイトに変換する方法と、その逆のエンコードとデコードの概念について理解しました。


タイトルとURLをコピーしました