Pythonには固有の文字列フォーマット(モジュロ)操作が用意されている。文字列中の%?であらわされる部分が、文字列の後ろに与えられた変数で置換される。
単一値の置換
単一の変数を置換する場合は、文字列の後ろに%と置換したい値を並べて記述する。
- %s: 文字列として置換
- %d: 整数値として置換
- %f: 浮動小数点数として置換
- %x: 16進整数として置換
置換例
1 2 3 4 5 6 7 8 9 10 | >>> "%s" % 123 '123' >>> "%d" % 123 '123' >>> "%0.1f" % 123 '123.0' >>> "%.3f" % 123 '123.000' >>> "Hello, %s!" % "python" 'Hello, python!' |
タプルによる置換
タプルを使うと複数の値を置換できます。
1 2 3 4 5 6 | >>> "%d + %d = %d" % (2, 3, 2+3) '2 + 3 = 5' >>> "%d ** %d = %d" % (2, 10, 2**10) '2 ** 10 = 1024' >>> "<title>%s</title><body>%s</body>" % ("title", "python") '<title>title</title><body>python</body>' |
リストは使えません。
1 2 3 4 | >>> "<title>%s</title><body>%s</body>" % ["title", "python"] Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: not enough arguments for format string |
ディクショナリによる置換
ディクショナリを使うと、置換する箇所に名前をつけることができます。置換する箇所が1,2個だと名前を指定するのは面倒ですが、長文の中で3,4箇所置換が発生する場合は名前を指定するほうがわかりやすくなります。
1 2 | >>> "<title>%(title)s</title><body>%(body)s</body>" % {"title":"title", "body":"python"} '<title>title</title><body>python</body>' |
リファレンス
http://www.python.jp/doc/2.5/lib/typesseq-strings.html