適当のごった煮

Pythonと境界標とQGISを中心にいろいろと

formatで文字列に変数を埋め込む

スポンサードリンク

文字列中に変数を埋め込みたいときは、文字列オブジェクトメソッドのformatが便利です。

例えば、固定幅の連番ファイル名を作成するときなどに使えます。下記の例では「001.txt」から「010.txt」まで出力されます。

for i in range(1, 11):
    fname = '{:03d}.txt'.format(i)
    print(fname)

基本的な使い方は、文字列中の変数を埋め込みたい場所に大カッコを入力して、formatに埋め込みたい変数リストや辞書を渡します。formatに渡した変数は、特に指定しなければstr()で解釈して文字列に埋め込まれるので、数値をそのまま入力できます。

出力形式を指定する場合は、大カッコ内でフィールド名などの後ろに「:」をつけて色々と指定します。出力の幅や左右中央寄せ、基数や桁区切りなど細かく指定できます。

Pythonドキュメント 6.1.3. 書式指定文字列の文法は詳しすぎる面があるので、自分がよく使う指定方法を表にまとめました。

埋め込み方法 使用例 出力
単純な使用例 '{0}, {1}, {2}'.format('a', 'b', 'c') 'a, b, c'
簡略的 '{}, {}, {}'.format('a', 'b', 'c') 'a, b, c'
順番入れ替え '{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a'
変数名で指定 '({x}, {y}, {x})'.format(x=99, y=10) '(99, 10, 99)'
右寄せ(指定数字が全体の文字数) '{:>6}'.format('右寄せ') '   右寄せ'
左寄せ(指定文字で空白を埋める) '{:-<6}'.format('左寄せ') '左寄せ---'
中央寄せ(空白をAで埋める) '{:A^5}'.format(5) 'AA5AA'
正負の記号付きで小数 '{:+f}'.format(7) '+7.000000'
小数点以下第3位まで(四捨五入) '{:.3f}'.format(7.85963) '7.860'
基数(2, 8進数)の指定 '{0:#b}, {0:#o}'.format(10) '0b1010, 0o12'
基数(10, 16進数)の指定 '{0:d}, {0:#x}'.format(10) '10, 0xa'
3桁ごとに区切りを入れる '{:,}'.format(1000000) '1,000,000'