🧮
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