投稿日:
【小技】Python3で数字を0埋めした文字列に変換する方法(動的も可能)【瞬殺】
YouTubeも見てね♪
ねこじゃすり
猫を魅了する魔法の装備品!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
ペヤング ソースやきそば 120g×18個
とりあえず保存食として買っておけば間違いなし!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
サンディスク microSD 128GB
スマホからSwitchまで使える大容量MicroSDカード!
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埋めされましたね♪