[解決!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の各メソッドを呼び出している。結果は見ての通りだ。

文字列を右寄せして0埋め:zfillメソッド

 文字列にはzfillメソッドという、指定した長さで文字列を右寄せして空いた部分を'0'埋めするメソッドもある。文字列化されている数値を0埋めするようなときには便利に使えるだろう。

 zfillメソッドは新しい文字列の長さを指定する引数を1つ取る。以下に使用例を示す。

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


 この例では、元の文字列は'345'という3文字で、zfillメソッドには新しい文字列の長さを8と指定している。そのため、返された文字列は'345'が右寄せされて、その前に5個の'0'が埋められている。

 元の文字列の先頭に+/-の符号がある場合には、符号の後が0埋めされることは覚えておこう。以下に例を示す。

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

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


 符号の後が0埋めされていることに注目してほしい。

 なお、文字列の書式化を行うことで、数値や文字列の表示方法をより詳細に制御できる。これについては「[解決!Python]数値を0埋めして文字列化するには」や「[Python入門]文字列の書式指定」などを参照されたい。

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

解決!Python

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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