2015/10/26

Python Tips:Python でゼロパディングしたい

今回は Python でゼロパディングする方法をご紹介します。

  • 1. int の場合
  • 2. str の場合


1. int の場合


整数型の場合は string 型の 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 で気持ちがいいですね。

参考
python - Nicest way to pad zeroes to string - Stack Overflow

0 件のコメント: