logutilsのDollarMessageとBraceMessage

pythonで文字列のformattingというと% formattingを普段使ってたんですが、logutilsのコード読んでて、formatを使う方法(2.6~)とTemplateを使う方法(2.4~)があるのを知りました。

formatを使う方法、logutilsでいうとBraceMessageのほうは、Python3からのバックポートらしいんでそれを使うのがベストなんですかね。


DollarMessageとBraceMessageの使い方は以下の様な感じ
format、Templateそれぞれのwrapperなんですね

import unittest
from logutils import DollarMessage as _d
from logutils import BraceMessage as _b


class FormattingTest(unittest.TestCase):

    def test_formatting(self):

        expected = 'Message with 2 placeholders'

        # Brace formatting
        self.assertEquals(str(_b('Message with {0} {1}', 2, 'placeholders')), expected)
        # equivalent to
        self.assertEquals('Message with {0} {1}'.format(2, 'placeholders'), expected)

        # Dollar formatting
        self.assertEquals(str(_d('Message with $num $what', num=2, what='placeholders')), expected)
        # equivalent to
        self.assertEquals(Template('Message with $num $what').substitute(num=2, what='placeholders'), expected)

% formattingは廃止される予定ってことなので、あまり使わない方がいいのかもしれない。

参考 : logutils 0.3.3 : Python Package Index
参考 : 第6回 Pythonicな文字列フォーマットforamat()メソッド:Python 3.0 Hacks|gihyo.jp … 技術評論社