文字列の大文字・小文字の色々な変換
呼称: 文字列の大文字・小文字の色々な変換
目的: 目的に応じて文字列を大文字、又は小文字へ変換する
特徴: ジェネレータを用いる事で柔軟な変換ができる
用例: 文字列の比較演算の前処理や出力のフォーマット整形等
備考: ライブラリも色々、やり方も色々
先日の C 言語での文字列の大文字・小文字の変換に触発されて、python でも同様のことをやってみました。python だと、title(), capitalize(), lower()/upper() が標準ライブラリとして提供されています。それだけだと、ライブラリリファレンス見て下さいねで終わってしまうので、ジェネレータを用いた変換関数を作成してみました(^ ^;;
ジェネレータ(yield) は python 2.5 で追加された機能になります。私自身、yield の使い方がよく分かっていないのですが、リストの処理を途中でやめるような場合には、汎用的に使えると思います。
#!/usr/bin/env python def main(): s1 = 'capitalize string' s2 = 'UNCAPITALIZE STRING' print '### title() method' print s1.title() print s2.title() print '\n### capitalize() method' print s1.capitalize() print s2.capitalize() print '\n### lower()/upper() method' print s1.upper() print s2.lower() print '\n### my_str_lower_upper() method' cnt = 5; rs = '' r = my_str_lower_upper(s1, lambda x: x.upper()) for i in xrange(0, cnt): rs += rs.join(r.next()) print rs + s1[cnt:] cnt = 10; rs = '' r = my_str_lower_upper(s2, lambda x: x.lower()) for i in xrange(0, cnt): rs += rs.join(r.next()) print rs + s2[cnt:] def my_str_lower_upper(string, func): """ convert character by func()""" for s in string: yield func(s) if __name__ == '__main__': main()
実行結果。
### title() method Capitalize String Uncapitalize String ### capitalize() method Capitalize string Uncapitalize string ### lower()/upper() method CAPITALIZE STRING uncapitalize string ### my_str_lower_upper() method CAPITalize string uncapitaliZE STRING
リファレンス:
3.6.1 文字列メソッド
LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする
formatメモ