LoginSignup
67
59

More than 5 years have passed since last update.

知ってるようで知らないPythonの特殊コーデック

Last updated at Posted at 2014-04-30

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 とかは、モジュールを使用しなくても文字列を圧縮することができるので、大変便利ですよね。

67
59
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67
59