🧮

Pythonで数値を0埋めして文字列にする方法【zfill, format, f-stringまとめ】

に公開

はじめに

Pythonで数値を文字列に変換するとき、
こんな困った経験はありませんか?

「数値に0を付けて、'001'みたいな形式にしたい」
「普通にstr()しただけでは0が付かない」

私自身、実務でファイル名やIDを作るときに
この問題に直面し、調べた経験があります。

本記事では、Pythonで数値を0埋めして文字列にする方法を解説します。

str()を使っただけではうまくいかない

例えば、str()を使うと:

num = 1
result = str(num)
print(result)  # → '1'

0は付かず、単純に文字列化されるだけです。

方法① str.zfill()を使う

一番シンプルな方法が、zfillを使うやり方です。

num = 1
result = str(num).zfill(3)
print(result)  # → '001'
  • zfill(n) は、指定した桁数(n)になるように、
    足りない部分をゼロで埋めてくれます
  • 3桁指定しているので、'001'になります。

特徴

  • とにかく簡単
  • 数値を文字列に変換してから使う必要がある(str()を忘れずに)

方法② format()を使う

もう少し柔軟に書きたい場合は、formatメソッドが使えます。

num = 1
result = '{:03}'.format(num)
print(result)  # → '001'
  • {}の中に:03と書くことで、3桁ゼロ埋めを指定しています。

特徴

  • format文字列なので、比較的読みやすい
  • f-stringに比べると少し冗長

方法③ f-stringを使う(おすすめ)

Python3.6以降で使えるf-stringを使うと、さらに直感的に書けます。

num = 1
result = f'{num:03}'
print(result)  # → '001'
  • f'...'の中に直接、値と書式指定をセットで書けます。

特徴

  • 最もシンプルで読みやすい
  • 変数をそのまま埋め込める
  • 最近のPythonではf-stringが推奨されることが多い

まとめ

方法 特徴 おすすめ度
str.zfill() 非常に簡単だが、数値をstr変換してから使う必要あり
format() 柔軟に使えるが、やや冗長になりやすい
f-string 簡潔で読みやすく、現在主流の書き方

おわりに

数値を0埋めして文字列にする方法は、
一見些細な処理ですが、
実務でも意外とよく使う場面が出てきます。

本記事が参考になれば幸いです。

Discussion