Pythonメモ

Pythonで文字列から文字コードを求めるのはord()という関数である。逆に文字コードから文字(列)を求めるのがchr()だとされている。…であるからして、

chr(ord(str[0])) == str[0]

は常に真であるように思える。しかし、違う。ord()がUnicodeに対応しているのに対し、chr()は対応しておらず、chr()の引数は0〜256の範囲しけ受けつけず、範囲外の値が渡されるとValueError例外を投げてしまうのだ。

これを回避するにはu"%c" %(val)を使う方法しか私は知らない。

u"%c" %(ord(str[0])) == str[0]

はだいたい常に真のようである。

chr()の引数に文字コード情報がないというのが間違いではないかと思う。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です