Python 3で文字列をバイトに変換する最良の方法は?
https://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-buffer-interface の回答にあるように、文字列をバイトに変換するには2つの異なる方法があるようです。
どちらの方法がPythonicで良いのでしょうか?それとも、個人的な好みの問題でしょうか?
b = bytes(mystring, 'utf-8')
b = mystring.encode('utf-8')
718
3
bytes
のドキュメントを見てみると、[
bytearray`](https://docs.python.org/3/library/functions.html#func-bytearray)が紹介されています。bytearray()は、str.encode()を使って文字列をバイトに変換します。
そして、bytearray()はstr.encode()で文字列をバイトに変換します。
思ったよりも簡単です。
絶対的に最良の方法は、2つのうちのどちらでもなく、3つ目の方法です。Python 3.0以降、
encode
の最初のパラメータは デフォルト*'utf-8'
になっています。したがって、最良の方法はなぜなら、デフォルトの引数の結果は、Cのコードでは文字列
"utf-8"
ではなく、NULL
であり、これはチェックするのが ずっと 速いからです。以下に、いくつかのタイミングを示します。
警告にもかかわらず、繰り返し実行した後のタイムは非常に安定しており、偏差はわずか2%程度でした。
Python 2 ではデフォルトの文字エンコーディングが ASCII であるため、引数なしで
encode()
を使用することは Python 2 と互換性がありません。