先日Pythonで文字列処理のスクリプトを書いてハマりました。やろうとしていたのは、テキストファイルを読込み、そこから辞書型変数にテキストファイルからキーと、変数の内容を取り込もうとしたのでした。
で辞書型変数にデータを取り込んだところまでは良いのですが、キーを指定してそれに対応するデータを取り出そうとすると、空振りします。キーを指定してもデータが取れだせないのです。おかしいと思って、辞書型変数のキーの一覧とデータの中身を書き出すと、ちゃんとキーはあります。あるのにキーを指定してもデータが取り出せないのです。
で、さんざんああでもない、こうでもないとやった挙句にたどり着いた解決法は、キーを読み込む時に文字列に対して、Stripメソッドを掛けてからキーを辞書型変数に登録しなければならないということでした。
ファイルから例えば 'ABC'というキーを読んだつもりでも、おそらく何か制御コードが入ってしまうということです。あるいはユニコードを示す制御コードかもしれません。だとすると'ABC'のつもりが実際には u'ABC'になっており、あとで、'ABC'というキーでデータを取り出そうとしても取り出せない... ということかもしれません。そこでStripメソッドで、uを外して'ABC'にして、キーとして読み込まなければいけない、ということのようです。
仮に辞書型変数がdic、キーが入った変数をstrとすると
dic[str.strip()] = 'data contents'
としなければいけないようです。
これもPythonのベテランの方には常識かと思いますが、自分のための備忘録として...