0埋め文字列を作りたい
業務システムやAPIを作成している方であれば、数値を任意の桁に0埋めした値を生成したい、というケースが少なからずあると思います。
Pythonでは、その辺りもとても簡単に実装する事出来ますので、 備忘録がてらご紹介致します。
手順
前提
筆者のPythonの環境は以下となっております。
python --version
Python 3.6.1
0埋めする桁数が決まっている場合
0埋めを行いたい桁数が仕様としてあらかじめ決まっている場合は、format関数を使う事で実現可能です。
{0:00d}の部分を0埋めした桁数だけ数値を変えてください。
| 桁数 | フォーマット |
|---|---|
| 2桁 | {0:02d} |
| 3桁 | {0:03d} |
| 4桁 | {0:04d} |
確認
以下のファイルを作成し、
one = 1
ten = 10
oneHundred = 100
print('0桁0詰め:{0:00d}'.format(one))
print('0桁0詰め:{0:00d}'.format(ten))
print('0桁0詰め:{0:00d}'.format(oneHundred))
print("==================================")
print('1桁0詰め:{0:01d}'.format(one))
print('1桁0詰め:{0:01d}'.format(ten))
print('1桁0詰め:{0:01d}'.format(oneHundred))
print("==================================")
print('2桁0詰め:{0:02d}'.format(one))
print('2桁0詰め:{0:02d}'.format(ten))
print('2桁0詰め:{0:02d}'.format(oneHundred))
print("==================================")
print('3桁0詰め:{0:03d}'.format(one))
print('3桁0詰め:{0:03d}'.format(ten))
print('3桁0詰め:{0:03d}'.format(oneHundred ))
print("==================================")
print('4桁0詰め:{0:04d}'.format(one))
print('4桁0詰め:{0:04d}'.format(ten))
print('4桁0詰め:{0:04d}'.format(oneHundred ))
print("==================================")
実行すると以下のようなログが出力されます。
※0桁及び1桁指定の時にどうなるかも確認したかったので0~4桁指定にしています
$ python script.py
0桁0詰め:1
0桁0詰め:10
0桁0詰め:100
==================================
1桁0詰め:1
1桁0詰め:10
1桁0詰め:100
==================================
2桁0詰め:01
2桁0詰め:10
2桁0詰め:100
==================================
3桁0詰め:001
3桁0詰め:010
3桁0詰め:100
==================================
4桁0詰め:0001
4桁0詰め:0010
4桁0詰め:0100
==================================
エラーが起きる事無く正しく0埋めが行われていますね♪
0埋めをする桁数を動的に指定したい場合
複雑な仕様により、0埋めの桁数を動的に指定したい場合は、zfill関数を使用します。
先ほどのformat関数内の{0:00d}の部分には変数を埋め込む事が出来ないので動的に指定する事が出来ません。
確認
以下のファイルを作成し、
one = 1
ten = 10
oneHundred = 100
for index in range(5):
print( str(index) + '桁0詰め:' + str(one).zfill(index))
print( str(index) + '桁0詰め:' + str(ten).zfill(index))
print( str(index) + '桁0詰め:' + str(oneHundred).zfill(index))
print("==================================")
実行すると以下のようなログが出力されます。
※0桁及び1桁指定の時にどうなるかも確認したかったので0~4桁指定にしています
python script.py
0桁0詰め:1
0桁0詰め:10
0桁0詰め:100
==================================
1桁0詰め:1
1桁0詰め:10
1桁0詰め:100
==================================
2桁0詰め:01
2桁0詰め:10
2桁0詰め:100
==================================
3桁0詰め:001
3桁0詰め:010
3桁0詰め:100
==================================
4桁0詰め:0001
4桁0詰め:0010
4桁0詰め:0100
==================================
こちらもエラーが起きる事無く正しく0埋めされましたね♪
