pythonはモジュロ演算子(%)を使って文字列へのフォーマット操作ができます。
型変換だけならstr()等でキャストでもいいのですが、桁揃えとかもやってくれるので極力こっちを使うようにしています。
でも、すぐ忘れます。
使い方はシンプル
i=123 print "Hellow World %d" % i #結果 #Hellow World 123
上の例では、%dの部分が123で置き換えられています。
ここで使っている%dは「整数値と入れ替えますよ」の意味。
複数を置換する場合は、下のように書きます。
i=123 j=987.654 k=15 print "Hellow World %d %f %x" %(i,j,k) #結果 Hellow World 123 987.654000 f
ここで使った%sは文字列と置き換えるという意味。
同様に、%fは10進数の浮動小数点と置き換えるという意味。
%xは符号なしの16進数(小文字)と置換するという意味。
またこの、モジュロ演算子を使うことで幅や精度の指定等いろいろできます。
以下はその例。
i=123 j=-456 # 幅の指定 print "Hellow World %10d %10d" % (i, j) # 精度の指定 print "Hellow World %10.2f %10.2f" % (i, j) # 0 で左を埋める print "Hellow World %010d %010d" % (i, j) # 左寄せ print "Hellow World %-10d %-10d" % (i, j) # 符号をつける print "Hellow World %+10d %+10d" % (i, j) #結果 Hellow World 123 -456 Hellow World 123.00 -456.00 Hellow World 0000000123 -000000456 Hellow World 123 -456 Hellow World +123 -456
他にもいろいろできるみたいですが、使うのはこのくらいでしょうか。 さらなる詳細はドキュメント参照ってことで。
備忘録なので自分が見返して、思い出しやすいように書いたので、分かりづらいところ等あったらごめんなさい。
=2013年4月29日追記=
どうやら、%(モジュロ演算子)を使ってのフォーマット変換は古いようです。
『str.format(*args, **kwargs)』を使うのがよりPythonらしいのだそうです。
試しに上記のモジュロ演算子で行った操作を、『str.format(*args, **kwargs)』を使って行ってみます。
通常の置換
i=123 print "Hellow World {0}".format(i) #結果 #Hellow World 123
10進数、浮動小数点、16進数
i=123 j=987.654 k=15 print "Hellow World {0:d} {1:f} {2:x}".format(i,j,k) #結果 #Hellow World 123 987.654000 f
幅や精度の指定等
i=123 j=-456 # 幅の指定 print "Hellow World {0:>10} {1:>10}".format(i, j) # 精度の指定 print "Hellow World {0:>10.2f} {1:>10.2f}".format(i, j) # 0 で左を埋める print "Hellow World {0:010d} {1:010d}".format(i, j) # 左寄せ print "Hellow World {0:+} {1:+}".format(i, j) #結果 #Hellow World 123 -456 #Hellow World 123.00 -456.00 #Hellow World 0000000123 -000000456 #Hellow World 123 -456 #Hellow World +123 -456
参考資料
http://docs.python.jp/2/library/stdtypes.html?highlight=format#str.format
http://docs.python.jp/2/library/string.html#formatstrings
コメント