[解決!Python]文字列を中央寄せ/左寄せ/右寄せするには(center/ljust/rjust/zfillメソッド)解決!Python

Pythonには文字列の内容を中央/左/右にそろえたり、0埋めを行ったりするためのメソッドがある。それらの使い方を紹介する。

» 2021年01月26日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

# 文字列の中央寄せ/左寄せ/右寄せ
s1 = 'foo'
s2 = s1.center(8# 8文字の文字列として文字列s1を中央寄せ
print(s2)  #   foo  
print(s2.replace(' ', '-'))  # --foo---(確認用)
s2 = s1.ljust(8# 8文字の文字列として文字列s1を左寄せ
print(s2)  # foo    
print(s2.replace(' ', '-'))  # foo-----(確認用)
s2 = s1.rjust(8# 8文字の文字列として文字列s1を右寄せ
print(s2)  #      foo
print(s2.replace(' ', '-'))  # -----foo(確認用)

# 埋め文字を指定
s1 = 'foo'
s2 = s1.center(8, '*'# 8文字の文字列として文字列s1を中央寄せ(埋め文字は'*')
print(s2)  # **foo***

# 文字列を右寄せして0埋め
s1 = '345'
s2 = s1.zfill(8)
print(s2)  # 00000345

s1 = '-345'
s2 = s1.zfill(8)
print(s2)  # -0000345


文字列の中央寄せ/左寄せ/右寄せ:center/ljust/rjustメソッド

 Pythonでは文字列のcenter/ljust/rjustメソッドを使用すると、元の文字列を指定した長さで中央寄せ/左寄せ/右寄せした新しい文字列を得られる。これらのメソッドは引数として新しい(中央寄せ/左寄せ/右寄せした)文字列の長さとオプションで、埋め文字を指定できる。

 新しい文字列の長さだけを指定した場合の例を以下に示す。

s1 = 'foo'
s2 = s1.center(8# 8文字の文字列として文字列s1を中央寄せ
print(s2)  #   foo  
print(s2.replace(' ', '-'))  # --foo---(確認用)

s2 = s1.ljust(8# 8文字の文字列として文字列s1を左寄せ
print(s2)  # foo    
print(s2.replace(' ', '-'))  # foo-----(確認用)

s2 = s1.rjust(8# 8文字の文字列として文字列s1を右寄せ
print(s2)  #      foo
print(s2.replace(' ', '-'))  # -----foo(確認用)


 この例では、文字列'foo'を元に、8文字の長さの文字列を作成している。centerメソッドは、その中で元の文字列を中央寄せし、ljustメソッドは左寄せし、rjustメソッドは右寄せする。

 実行結果を見ると分かるが、新しい文字列では元の文字列以外の部分は半角空白文字で埋められる(末尾の空白文字が見えにくいことや、文字数がハッキリ分からないことから、実行結果には空白文字をマイナス記号'-'に置換したものも表示するようにしてあるので確認されたい)。

 第1引数に指定した文字列の長さが、元の文字列の長さよりも短いときには、元の文字列が返される(文字列のどこかが削られるようなことはない)。

s1 = 'foo bar baz'
s2 = s1.rjust(5)
print(s2)  # foo bar baz


 第2引数には文字を1つだけ(長さ1の文字列を)指定する。その場合には、新しい文字列では中央寄せ/左寄せ/右寄せされた元の文字列の前後がその文字で埋められる。

 以下に例を示す。

s1 = 'foo'
s2 = s1.center(8, '*'# 8文字の文字列として文字列s1を中央寄せ(埋め文字は'*')
print(s2)  # **foo***

s2 = s1.ljust(7, '='# 7文字の文字列として文字列s1を左寄せ(埋め文字は'=')
print(s2)  # foo====

s2 = s1.rjust(5, '_'# 5文字の文字列として文字列s1を右寄せ(埋め文字は'_')
print(s2)  # __foo

s2 = s1.center(8, '+='# TypeError:埋め文字には1文字だけ指定する


 この例では、第2引数に埋め文字を指定してcenter/ljust/rjustの各メソッドを呼び出している。結果は見ての通りだ。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。