Pythonで文字列・数値を右寄せ、中央寄せ、左寄せ
Pythonで文字列(str
型)を右寄せ、中央寄せ、左寄せ(右揃え、中央揃え、左揃え)したい場合は、文字列メソッドrjust()
, center()
, ljust()
を使う。数値(int
型やfloat
型)を処理する場合はstr()
で文字列に変換してから各メソッドを呼び出す。
ここでは以下の内容について説明する。
- 右寄せ(右揃え):
rjust()
- 中央寄せ(中央揃え):
center()
- 左寄せ(左揃え):
ljust()
- 数値などに適用する場合
- 任意の書式変換:
format()
, f文字列
右寄せ(右揃え): rjust()
文字列を右寄せ(右揃え)するにはrjust()
メソッドを使う。
第一引数に生成する文字列の文字数を指定する。デフォルトでは空白(スペース)で埋められる。
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()
メソッドを使う。
使い方は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()
メソッドを使う。
使い方は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@@@@@
数値もそのまま変換可能。埋める方向を省略すると右寄せになる。16進数に変換してゼロ埋め、というような処理もできる。詳細は上記の関連記事参照。
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
f文字列についての詳細は以下の記事を参照。