文字列を右に寄せて空いた部分を0で埋めたり(0パディング)するには、format()を使うとできますが、書式設定が意外と複雑です。
そこで本記事では、同じ結果が得られるもっと簡単な方法を2つ紹介します。
どちらも文字列のメソッドです。
- zfill():
- 右寄せ+空いた左側を0埋めする
- rjust()、ljust()、center():
- 文字列を右寄せ・左寄せ・中央寄せ、且つパディングする文字も任意に設定可能
確認した環境
- OS: Ubuntu20.04LTS
- Python3.11.2
zfill()を使った右寄せ+0埋め(ゼロパディング)
0埋め(ゼロパディング)はformat()を使うと書けますが、書式設定が複雑です。
同じ動作は、zfill()を使うともっと簡単に書けます。
str.zfill(width)
これは文字列(str型)のメソッドで、
- 長さが widthで指定した値になる様に文字列を右寄せ
- 空いた左側を‘0’でパディング
を自動でやってくれます。また、
- 返り値は上記の文字列のコピー(=元の文字列は変わらない)
- 符号(+/-)がある場合は ‘0’ は符号の後に挿入される
具体な例を以下に示します。
#文字列の左側を0埋め >>> str = '2' >>> str.zfill(5) '00002' #文字列よりも小さい引数の場合は元の文字列を返却 >>> str = '12345' >>> str.zfill(3) '12345' #符号(+/-)がある場合はその後に0埋め >>> str = '-2' >>> str.zfill(5) '-0002' >>> str = '+2' >>> str.zfill(5) '+0002'
rjust(), ljust(),center()による右寄せ、左寄せ、中央寄せ
文字列を寄せた後、空いた所を埋める文字列を任意に設定したい場合に便利だと思います。
どれも使い方は一緒なので、ここではrjust()を例とします。
str.rjust(width[, fillchar])
上記のzfill()と同様、これらは文字列(str型)のメソッドです。
- 出力したい文字列の長さをwidthで設定
- パディングする文字をfillcharに設定(デフォルトはスペース)
- widthがstrの長さ以下の場合は元の文字列が返却
具体的な使用例を以下に示します。
# 右寄せ、左寄せ、中央寄せ >>> '2'.rjust(5) ' 2' >>> '2'.ljust(5) '2 ' >>> '2'.center(5) ' 2 ' # 0埋め(ゼロパティング)した場合 >>> '2'.rjust(5, '0') '00002' >>> '2'.ljust(5, '0') '20000' >>> '2'.center(5, '0') '00200' # 任意の文字列(ここでは'x')でパディングした場合 >>> '2'.rjust(5, 'x') 'xxxx2' >>> '2'.ljust(5, 'x') '2xxxx' >>> '2'.center(5, 'x') 'xx2xx' #widthがstrの長さ以下の場合は元の文字列を返します >>> '12345'.rjust(3) '12345' >>> '12345'.ljust(3) '12345' >>> '12345'.center(3) '12345'
まとめ
文字列の右寄せ、左寄せ、中央寄せ、および0埋め(ゼロパディング)について簡単な方法についてまとめました。
- 右寄せ+空いた左側を0埋め(ゼロパディング) → zfill()
- 左寄せ、右寄せ、中央寄せ+パディング設定 → rjust(), ljust(), center()