Pythonの文字列オブジェクトには、文字列を特定のコーデックでエンコード/デコード操作が可能ですが、その中で今まであまり知らなかったコーデックを紹介します。
base64
これはご存知の方が多いかと思いますが、文字列を Base64 文字列にエンコード/デコードします。
>>> "hello".encode("base64")
'aGVsbG8=\n'
zip
このコーデックは、文字列を Zlib モジュールでCompressした場合と同じバイト列を返します。
>>> "hello".encode("zip")
'x\x9c\xcbH\xcd\xc9\xc9\x07\x00\x06,\x02\x15'
>>> import zlib
>>> zlib.compress("hello")
'x\x9c\xcbH\xcd\xc9\xc9\x07\x00\x06,\x02\x15' #同じ
hex
このコーデックは、文字列をバイトあたり2桁の16進数に変換します。
>>> "hello".encode("hex")
'68656c6c6f'
bz2
このコーデックは、文字列をbz2を使って圧縮します。
>>> "hello".encode("bz2")
'BZh91AY&SY\x191e=\x00\x00\x00\x81\x00\x02D\xa0\x00!\x9ah3M\x073\x8b\xb9"\x9c(H\x0c\x98\xb2\x9e\x80'
rot13
このコーデックは、シーザー暗号を使って文字列を暗号化します。
>>> "hello".encode("rot_13")
'uryyb'
uu
このコーデックは、uuencodeを使って文字列を変換します。
>>> print "hello".encode("uu")
begin 666 <data>
%:&5L;&\
end
idna
このコーデックは、 Unicode文字列 を、RFC3490で規定している、漢字などで入力されたドメイン名を、アプリケーション上でASCII形式で記述した文字列に変換するコーデックです。
>>> u"ハロー".encode("idna")
'xn--mdk0c0b'
Pythonには、これ以上の特殊コーデックがありますが、あまり日常的には使用しないものなので、これらのコーデックのみ紹介しました。 zip
とか bz2
とかは、モジュールを使用しなくても文字列を圧縮することができるので、大変便利ですよね。