Menampilkan nomor dengan awalan nol

Mengingat:

a = 1
b = 10
c = 100

Bagaimana cara menampilkan nol untuk semua nomor dengan kurang dari dua digit?

Artinya,

01
10
100
Larutan

Di Python versi 2 yang dapat anda lakukan:

print "%02d" % (1,)

Pada dasarnya % seperti printf atau sprintf.


Untuk Python 3.+ perilaku yang sama dapat dicapai dengan:

print("{:02d}".format(1))

Untuk Python 3.6+ perilaku yang sama dapat dicapai dengan f-string:

print(f"{1:02d}")
Komentar (7)

Anda dapat menggunakan str.zfill:

print str(1).zfill(2) 
print str(10).zfill(2) 
print str(100).zfill(2) 

cetakan:

01
10
100
Komentar (1)

Di Python 2.6+ dan 3.0+, anda akan menggunakan format() string metode:

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

atau menggunakan built-in (untuk nomor tunggal):

print(format(i, '02d'))

Lihat PEP-3101 dokumentasi untuk fungsi format.

Komentar (2)
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

cetakan:

01
10
100
Komentar (2)

Atau ini:

cetak '{0:02d}'.format(1)

Komentar (0)

Di Python >= 3.6, anda dapat melakukan ini dengan ringkas dengan yang baru f-string yang diperkenalkan dengan menggunakan:

f'{val:02}'

yang mencetak variabel dengan nama val dengan isi nilai 0 dan a lebar dari 2.

Untuk anda contoh anda dapat melakukan hal ini baik dalam loop:

a, b, c = 1, 10, 100
for val in [a, b, c]:
    print(f'{val:02}')

yang mencetak:

01 
10
100

Untuk informasi lebih lanjut tentang f-string, lihatlah PEP 498 di mana mereka diperkenalkan.

Komentar (0)
x = [1, 10, 100]
for i in x:
    print '%02d' % i

hasil:

01
10
100

Baca informasi lebih lanjut tentang string pemformatan menggunakan % dalam dokumentasi.

Komentar (1)

Yang Pythonic cara untuk melakukan ini:

str(number).rjust(string_width, fill_char)

Dengan cara ini, asli string yang dikembalikan tidak berubah jika panjangnya lebih besar dari string_width. Contoh:

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

Hasil:

01
10
100
Komentar (0)

Atau solusi lain.

"{:0>2}".format(number)
Komentar (1)

Menggunakan format string - http://docs.python.org/lib/typesseq-strings.html

Misalnya:

python -c 'print "%(num)02d" % {"num":5}'
Komentar (0)

Ini adalah bagaimana saya melakukannya:

str(1).zfill(len(str(total)))

Pada dasarnya zfill mengambil jumlah angka nol yang ingin anda tambahkan, sehingga's mudah untuk mengambil jumlah terbesar, mengubahnya menjadi sebuah string dan mendapatkan panjang, seperti ini:

Python 3.6.5 (default, 11 Mei 2018, 04:00:52) 
[GCC 8.1.0] pada linux
Jenis "bantuan", "hak cipta", "kredit" atau "lisensi" untuk informasi lebih lanjut.
>>> total = 100
>>> print(str(1).zfill(len(str(total))))
001
>>> total = 1000
>>> print(str(1).zfill(len(str(total))))
0001
>>> total = 10000
>>> print(str(1).zfill(len(str(total))))
00001
>>> 
Komentar (1)
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
Komentar (0)

Gunakan:

'00'[len(str(i)):] + str(i)

Atau dengan matematika module:

import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
Komentar (0)

df['Col1']=df['Col1'].menerapkan(lambda x: '{0:0>5}'.format(x)) (5 adalah jumlah total digit)

Saya menggunakan link ini: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/

Komentar (0)

Jika berurusan dengan angka-angka yang salah satu atau dua digit:

'0'+str(number)[-2:] atau'0{0}'.format(jumlah)[-2:]

Komentar (0)