"変数=数値" という文字列から変数と数値を別々に取り出す (リスト内包表記)
昨日、ちょっとシンドイ会議を乗り越えて、精神的に余裕が出てきた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