ページへ戻る
+ Links
印刷
Python/文字列に書式を設定して出力する(%記法、format)
の編集 ::
NJF Wiki
xpwiki
:
Python
/
文字列に書式を設定して出力する(%記法、format)
の編集
# c858d965 の編集
ページ内容:
*formatを使った書式設定 [#c858d965] ちょっとした書式設定とその出力には便利な%記法ですが、ある程度複雑な書式設定がしたいときには、今ひとつ使いづらい所があります。 例えば、前の例では文字列をソースコードの中で定義していましたが、プログラムとデータを分けるためにソースとは別ファイルに書式データなどを入れたとします。 すると、もしその書式の中で、変数の登場する順番を変えたいと思っても、%記法では変数の現れる順番はソースコードを修正しないと変えられないため、せっかくコードとデータを分けたのにソースの修正が必要になってしまいます。 例えば 大きい数が2、小さい数が1 という結果を得るために、 s = u"大きい数が%d、小さい数が%d" % (2,1) というコードを書いたとします。その後何らかの仕様変更で 小さい数が1、大きい数が2 と出力されるようにしたいとすると、 s = u"小さい数が%d、大きい数が%d" % (1,2) というコードが必要となり、書式設定だけではなく、(1,2)という変数の方も修正が必要です。 これは書式とコードの分離がされておらず、メンテナンス性が良くありません。 このような場合には「format」メソッドを使います。 formatは変数の場所に指定が可能なので、先ほどの例だと、 s = u"大きい数が{0}、小さい数が{1}".format(2,1) 結果 大きい数が2、小さい数が1 結果を入れ替えたいときは、 s = u"小さい数が{1}、大きい数が{0}".format(2,1) 結果 小さい数が1、大きい数が2 となって、変数の順番を変えずフォーマット文字列だけ変更して出力が可能です。 また、フォーマット文字列に使う変数に名前をつけることも可能です。 s = u"大きい数が{max}、小さい数が{min}".format(max=2,min=1) print s s = u"小さい数が{min}、大きい数が{max}".format(max=2,min=1) print s 結果 大きい数が2、小さい数が1 小さい数が1、大きい数が2 このようにformatを使うと書式設定の柔軟性や可読性があがるので、複雑な書式設定が必要な場合などはこちらを使うのがおすすめです。 formatは「{}」の中を省略することも出来ます。 この場合は引数の順序通り出力されます。 print u"{}と{}".format("A","B") 結果 AとB つまり、%記法と同じです。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
「京都」の読みがな?(ひらがなで)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する