"変数=数値" という文字列から変数と数値を別々に取り出す (リスト内包表記)

昨日、ちょっとシンドイ会議を乗り越えて、精神的に余裕が出てきたbonlifeです。週末は情報処理試験(ネットワーク)ですが、あまり気にしないことにしています。
そんなこんなでPython

でも、(”初めてのPython"によると)stringモジュールは過去の遺物になりつつあるらしい...。

ということは、もっともエレガントに書く方法があるということか?

stringモジュールに定義されている定数とか便利ですけどね、という話は置いておいて。ビルトインの str 使えばOKですよ。ただ、string でも str でも unicode を扱う場合はアウト…。mapを使わずにリスト内包表記に書き換えれば、str でも unicode でも適切に処理してくれます。(エレガントか、と言われると微妙ですけどね。) 以下のようなイメージ。

In [1]: line = ' pai   =   3.14   '

In [2]: u_line = u' pai   =   3.14   '

In [3]: map(str.strip, line.split('='))
Out[3]: ['pai', '3.14']

In [4]: map(unicode.strip, u_line.split('='))
Out[4]: [u'pai', u'3.14']

In [5]: [ x.strip() for x in line.split('=') ]
Out[5]: ['pai', '3.14']

In [6]: [ x.strip() for x in u_line.split('=') ]
Out[6]: [u'pai', u'3.14']

unicode 想定する必要がなければ str.strip がベストかもしれないですね。それはそうと、pai じゃなくて pi って書くのが正しそうですね…orz