Pythonで文字列・数値を右寄せ、中央寄せ、左寄せ

Pythonで文字列(str型)を右寄せ、中央寄せ、左寄せ(右揃え、中央揃え、左揃え)したい場合は、文字列メソッドrjust(), center(), ljust()を使います。数値(int型やfloat型)を処理する場合はstr()で文字列に変換してから各メソッドを呼び出す。 ここでは以下の内容について説明します。

右寄せ(右揃え): rjust() 中央寄せ(中央揃え): center() 左寄せ(左揃え): ljust() 数値に適用する場合 任意の書式変換: format(), f文字列

右寄せ(右揃え): rjust()

文字列を右寄せ(右揃え)するにはrjust()メソッドを使います。

  1. 組み込み型 str.rjust() — Python 3.6.5 ドキュメント

第一引数に生成する文字列の文字数を指定します。デフォルトでは空白(スペース)で埋められます。

s = 'abc'

s_rjust = s.rjust(8)

print(s_rjust)
#      abc

print(type(s_rjust))
# <class 'str'>

元の文字列の文字数以下の値を指定した場合は元の文字列のまま変化なし。

print(s.rjust(2))
# abc

第二引数に埋める文字を指定できます。全角文字でも問題ないが、2文字以上だとエラーTypeErrorとなります。

print(s.rjust(8, '+'))
# +++++abc

print(s.rjust(8, '漢'))
# 漢漢漢漢漢abc

# print(s.rjust(8, 'xyz'))
# TypeError: The fill character must be exactly one character long

右寄せでゼロ埋め(ゼロパディング)する場合はzfill()という専用のメソッドが用意されています。rjust()は符号(+, -)を考慮しないが、zfill()は符号のあとからゼロで埋める。

s_n = '-123'

print(s_n.rjust(8, '0'))
# 0000-123

print(s_n.zfill(8))
# -0000123

ゼロ埋めについての詳細は

中央寄せ(中央揃え): center()

文字列を中央寄せ(中央揃え)するにはcenter()メソッドを使います。

  1. 組み込み型 str.center() — Python 3.6.5 ドキュメント

使い方はrjust()と同じです。埋める文字数が奇数の場合は右側が1文字多くなります。

s = 'abc'

print(s.center(8))
#   abc   

print(s.center(8, '+'))
# ++abc+++

print(s.center(9, '+'))
# +++abc+++

print(s.center(10, '+'))
# +++abc++++

左寄せ(左揃え): ljust()

文字列を左寄せ(左揃え)するにはljust()メソッドを使います。

  1. 組み込み型 str.ljust() — Python 3.6.5 ドキュメント

使い方はrjust(), center()と同じです。 出力だと分かりにくいが、第二引数を省略した場合は後ろに空白(スペース)が追加されています。

s = 'abc'

print(s.ljust(8))
# abc     

print(s.ljust(8, '+'))
# abc+++++

数値に適用する場合

int型やfloat型などの数値を右寄せ、中央寄せ、左寄せしたい場合は、str()で文字列に変換してから各メソッドを呼び出す。

n = 123

print(type(n))
# <class 'int'>

print(str(n).rjust(8, '@'))
# @@@@@123

print(str(n).center(8, '@'))
# @@123@@@

print(str(n).ljust(8, '@'))
# 123@@@@@

任意の書式変換: format()

組み込み関数format()または文字列メソッドformat()で様々な書式変換ができます。文字列メソッドformat()では置換フィールド{}を使って文字列中に値を挿入できます。 詳しい使い方は

右寄せ、中央寄せ、左寄せの場合は[埋める文字][埋める方向][全体の文字数]で書式を指定します。埋める方向はそれぞれ>, ^, <を使います。

s = 'abc'

print('right : {:@>8}'.format(s))
# right : @@@@@abc

print('center: {:@^8}'.format(s))
# center: @@abc@@@

print('left  : {:@<8}'.format(s))
# left  : abc@@@@@


n = 255

print('right : {:08}'.format(n))
# right : 00000255

print('right : {:08x}'.format(n))
# right : 000000ff

Python3.6からはf文字列(フォーマット文字列)も使用できます。それより前のバージョンでは使えないので気をつけてください。

print(f'right : {n:08}')
# right : 00000255

print(f'right : {n:08x}')
# right : 000000ff
Last Updated: 6/26/2019, 10:34:03 PM