Diberikan:
a = 1
b = 10
c = 100
Bagaimana cara menampilkan nol di depan untuk semua angka dengan kurang dari dua digit?
Ini adalah output yang saya harapkan:
01
10
100
python
integer
string-formatting
ashchristopher
sumber
sumber
x = "%02d.txt" % i
memunculkan TypeError (tidak dapat menggabungkan objek 'str' dan 'int'), tetapix = "%02d.txt" % (i,)
tidak. Menarik. Saya ingin tahu di mana itu didokumentasikan%
string formater.Anda bisa menggunakan
str.zfill
:cetakan:
sumber
"{1:02d}"
tidak dapat memiliki variabel di tempat2
(seperti jika Anda membuat fungsi dinamis).Di Python 2.6+ dan 3.0+, Anda akan menggunakan
format()
metode string:atau menggunakan built-in (untuk satu nomor):
Lihat dokumentasi PEP-3101 untuk fungsi pemformatan baru.
sumber
cetakan:
sumber
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
Atau ini:
print '{0:02d}'.format(1)
sumber
Dalam Python> = 3.6 , Anda dapat melakukan ini secara ringkas dengan f-string baru yang diperkenalkan dengan menggunakan:
yang mencetak variabel dengan nama
val
denganfill
nilai0
danwidth
dari2
.Untuk contoh spesifik Anda, Anda dapat melakukannya dengan baik dalam satu lingkaran:
yang mencetak:
Untuk informasi lebih lanjut tentang f-string, lihat PEP 498 di mana mereka diperkenalkan.
sumber
menghasilkan:
Baca informasi lebih lanjut tentang pemformatan string menggunakan% dalam dokumentasi.
sumber
Cara Pythonic untuk melakukan ini:
Dengan cara ini, string asli dikembalikan tidak berubah jika panjangnya lebih besar dari string_width. Contoh:
Hasil:
sumber
Atau solusi lain.
sumber
"{0:0>2}".format(number)
, jika seseorang ingin nLeadingZeros mereka harus mencatat mereka juga dapat melakukannya:"{0:0>{1}}".format(number, nLeadingZeros + 1)
Gunakan string format - http://docs.python.org/lib/typesseq-strings.html
Sebagai contoh:
sumber
Beginilah cara saya melakukannya:
Pada dasarnya zfill mengambil jumlah nol terkemuka yang ingin Anda tambahkan, jadi mudah untuk mengambil angka terbesar, mengubahnya menjadi string dan mendapatkan panjangnya, seperti ini:
sumber
sumber
Anda dapat melakukan ini dengan f string .
Ini akan mencetak panjang konstan 8, dan menempelkan sisanya dengan memimpin
0
.sumber
Menggunakan:
Atau dengan
math
modul:sumber
Angka 5 adalah jumlah total digit.
Saya menggunakan tautan ini: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/
sumber
Jika berhadapan dengan angka yang satu atau dua digit:
'0'+str(number)[-2:]
atau'0{0}'.format(number)[-2:]
sumber