今回は Python でゼロパディングする方法をご紹介します。
-
int
の場合
-
str
の場合
1. int
の場合
整数型の場合は str
型の format()
メソッドや %
演算子を使う方法が最もシンプルかと思います。
format()
メソッド:
number = 50
number_padded = '{0:04d}'.format(number)
print(number_padded) # => '0050'
%
演算子:
number = 50
number_padded = '%04d' % number
print(number_padded) # => '0050'
いずれも 04d
で「 4 桁よりも短い場合はゼロパディングで 4 桁にする」という意味になります。もともとの数値が 4 桁よりも長い場合にはゼロパディングやトリムなどは行われません。
いずれの場合も 0 ではなく半角空白で詰めたい場合には 04d
のところを 4d
に変えれば OK です。
2. str
の場合
文字列の場合にはそのままずばりなメソッド zfill()
が用意されています。関数名の zfill
は「ゼロフィル」の略でしょう。
number_string = '50'
number_padded = number_string.zfill(4)
print(number_padded) # => '0050'
文字列の場合は zfill()
の他にも同等のメソッドがいくつか用意されています。
# rjust() は元の文字列を右づめで入れて引数で指定された長さまで文字で埋める
number_string = '50'
print(number_string.rjust(8, 'V')) # => 'VVVVVV50'
# rjust() は元の文字列を左づめで入れて引数で指定された長さまで文字で埋める
number_string = '50'
print(number_string.ljust(8, 'V')) # => '50VVVVVV'
# rjust() は元の文字列を左づめで入れて引数で指定された長さまで文字で埋める
number_string = '50'
print(number_string.ljust(8, 'V')) # => '50VVVVVV'
# center() は元の文字列を中央寄せにして、引数で指定された長さになるよう指定された文字を両端に入れる
number_string = '50'
print(number_string.center(8, 'V')) # => 'VVV50VVV'
以上です。
直感的でわかりやすい API で気持ちがいいですね。
参考