【Python】 文字列の右寄せ、左寄せ、中央寄せ(zfill, rjust, ljust,center)

Python 文字列 組込み型 組込み関数

文字列を右に寄せて空いた部分を0で埋めたり(0パディング)するには、format()を使うとできますが、書式設定が意外と複雑です。(なかなか覚えられない orz)
そこで本記事では、同じ結果が得られるもっと簡単な方法を2つ紹介します。
どちらも文字列のメソッドです。

  • zfill():
    • 右寄せ、0埋めする最も簡単な方法(だと思います)
  • rjust()、ljust()、center():
    • 文字列を右寄せ・左寄せ・中央寄せできて、パディングする文字も任意に設定可能

# 2019/4/14 記事更新

確認した環境

  • OS: Ubuntu16.04LTS
  • Python3.7.2@Anaconda

zfill()を使った0埋め(ゼロパディング)

0埋め(ゼロパディング)はformat()を使うと書けますが、書式設定が複雑です。

format()については以下の記事でまとめています。
[Python] 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埋め(ゼロパディング)について、format()以外のもっと簡単な方法についてまとめました。

  • 単に文字列の左側を0埋め(ゼロパディング)する → zfill()
  • 左寄せ、右寄せ、中央寄せ+パディング設定 → rjust(), ljust(), center()

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

シェアする
ひびきをフォローする
Hbk project