サブロウ丸

主にプログラミングと数学

Python 書式指定

文字列の中に様々な形式で値を入れる方法です。

%を使う方法

a = 'I am %d years old.' % 20
> a
'I am 20 years old. '

様々な言語でお馴染みですね。

指定 データ型
%s 文字列
%d 10進整数
%x 16進整数
%o 8進整数
%f 10進float
%e 指数形式float
%g 10進floatまたは指数形式float
%% リテラルの%

文字列の中でデータを差し込みたいところに%を置き、%の後ろにデータ型を指定します。
そのため、ただ'%'の文字を使いたいときは%%と%を2回入力しないといけません。

'%s is %f %%' % ('Apple', 40.0)
> 'Apple is 40.000000 %'



ちょっとした仕様

各変数について最小限の幅10を設定し、右揃えにして左側の余った部分にスペースを詰める。

'%10s is %10s.' % ('Dog', 'cute')
> '       Dog is       cute.'

同じ幅を使って左揃えにする。

'%-10s is %-10s.' % ('Dog', 'cute')
> 'Dog        is cute      .'

文字数に上限を加える(float型では小数点以下が指定した桁になる)

'%.3s is %.3f %.3s.' % ('Dog', 10.345, 'weights')
> 'Dog is 10.345 wei.'



formatを使う方法

'{} is {}.'.format('cat', 'cute')
> 'cat is cute.'

引数の順序の指定が可能

'{1} is {0}.'.format('cat', 'cute')
> 'cute is cat'

右揃え左揃え中央揃え

'{0:>10s} is {1:10>f} {2:10s}.'.format('Dog', 10.345, 'weights')
> '       Dog is  10.345000    weights.'
'{0:<10s} is {1:<10f} {2:<10s}.'.format('Dog', 10.345, 'weights')
> 'Dog        is 10.345000  weights   .'
'{0:^10s} is {1:^10f} {2:^10s}.'.format('Dog', 10.345, 'weights')
> '   Dog     is 10.345000   weights  .'


パディング(埋め)
0埋めなど
< > ^ で埋める場所を指定

'{0:0>2d}-{1:0>2d}'.format(12, 2)
> '12-02'
'{0:0<2d}-{1:0<2d}'.format(12, 2)
> '12-20'