ねこじゃすり
猫を魅了する魔法の装備品!
Anker PowerCor
旅行には必須の大容量モバイルバッテリー!
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
スポンサーリンク
0埋め文字列を作りたい
業務システムやAPIを作成している方であれば、数値を任意の桁に0埋めした値を生成したい、というケースが少なからずあると思います。
Pythonでは、その辺りもとても簡単に実装する事出来ますので、 備忘録がてらご紹介致します。
手順
前提
筆者のPythonの環境は以下となっております。
1 2 |
python --version Python 3.6.1 |
0埋めする桁数が決まっている場合
0埋めを行いたい桁数が仕様としてあらかじめ決まっている場合は、format関数
を使う事で実現可能です。
{0:00d}
の部分を0埋めした桁数だけ数値を変えてください。
桁数 | フォーマット |
---|---|
2桁 | {0:02d} |
3桁 | {0:03d} |
4桁 | {0:04d} |
確認
以下のファイルを作成し、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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桁指定にしています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ 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}
の部分には変数を埋め込む事が出来ないので動的に指定する事が出来ません。
確認
以下のファイルを作成し、
1 2 3 4 5 6 7 8 9 |
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桁指定にしています
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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埋めされましたね♪