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 … 技術評論社