ページへ戻る
印刷
Python/文字列に書式を設定して出力する(%記法、format)
をテンプレートにして作成 ::
NJF Wiki
xpwiki
:Python/文字列に書式を設定して出力する(%記法、format) をテンプレートにして作成
開始行:
Pythonではデフォルトで変数を書式設定して出力するいろいろ...
その中でよく使うのは次の二つです。
*%記法を使った書式設定
ちょっとした出力でよく使うのは%を使った記法です。
# -*- coding: utf-8 -*-
s = u"これは%sです" % u"テスト"
print s
結果
これはテストです
このように、「フォーマット文字列 % 変数」という形で、文字...
変数が複数になる場合には変数の部分をタプルにします。また...
s = u"これは%d回目の%sです" % (2,u"テスト")
print s
結果
これは2回目のテストです
他によく使う書式として、小数点以下のけた数を指定するものや
s = u"これは%.2fを表示する%sです" % (0.1234,u"テスト")
print s
結果
これは0.12を表示するテストです
先頭ゼロ詰めでけた数をあわせるなどがあります。
for i in (1,12,123):
print u"%04d" % i
結果
0001
0012
0123
詳しくはprintfの書式について調べると良いでしょう。
また、printfはUnix系のコマンドとしても通常は実装されてい...
$ printf "%02d,%.2f\n" 9 1.2345
09,1.23
*formatを使った書式設定
ちょっとした書式設定とその出力には便利な%記法ですが、ある...
例えば、前の例では文字列をソースコードの中で定義していま...
すると、もしその書式の中で、変数の登場する順番を変えたい...
例えば
大きい数が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...
print s
s = u"小さい数が{min}、大きい数が{max}".format(max=2,min...
print s
結果
大きい数が2、小さい数が1
小さい数が1、大きい数が2
このようにformatを使うと書式設定の柔軟性や可読性があがる...
formatは「{}」の中を省略することも出来ます。
この場合は引数の順序通り出力されます。
print u"{}と{}".format("A","B")
結果
AとB
つまり、%記法と同じです。
終了行:
Pythonではデフォルトで変数を書式設定して出力するいろいろ...
その中でよく使うのは次の二つです。
*%記法を使った書式設定
ちょっとした出力でよく使うのは%を使った記法です。
# -*- coding: utf-8 -*-
s = u"これは%sです" % u"テスト"
print s
結果
これはテストです
このように、「フォーマット文字列 % 変数」という形で、文字...
変数が複数になる場合には変数の部分をタプルにします。また...
s = u"これは%d回目の%sです" % (2,u"テスト")
print s
結果
これは2回目のテストです
他によく使う書式として、小数点以下のけた数を指定するものや
s = u"これは%.2fを表示する%sです" % (0.1234,u"テスト")
print s
結果
これは0.12を表示するテストです
先頭ゼロ詰めでけた数をあわせるなどがあります。
for i in (1,12,123):
print u"%04d" % i
結果
0001
0012
0123
詳しくはprintfの書式について調べると良いでしょう。
また、printfはUnix系のコマンドとしても通常は実装されてい...
$ printf "%02d,%.2f\n" 9 1.2345
09,1.23
*formatを使った書式設定
ちょっとした書式設定とその出力には便利な%記法ですが、ある...
例えば、前の例では文字列をソースコードの中で定義していま...
すると、もしその書式の中で、変数の登場する順番を変えたい...
例えば
大きい数が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...
print s
s = u"小さい数が{min}、大きい数が{max}".format(max=2,min...
print s
結果
大きい数が2、小さい数が1
小さい数が1、大きい数が2
このようにformatを使うと書式設定の柔軟性や可読性があがる...
formatは「{}」の中を省略することも出来ます。
この場合は引数の順序通り出力されます。
print u"{}と{}".format("A","B")
結果
AとB
つまり、%記法と同じです。
ページ名: