Verilen:
a = 1
b = 10
c = 100
İki basamaktan az olan tüm sayılar için önde gelen sıfırı nasıl görüntülerim?
Bu beklediğim çıktı:
01
10
100
Verilen:
a = 1
b = 10
c = 100
İki basamaktan az olan tüm sayılar için önde gelen sıfırı nasıl görüntülerim?
Bu beklediğim çıktı:
01
10
100
Yanıtlar:
Python 2'de (ve Python 3'te) şunları yapabilirsiniz:
print "%02d" % (1,)
Temel olarak % , gibidir printf
veya sprintf
(bkz. Dokümanlar ).
Python 3. + için aynı davranış aşağıdakilerle de elde edilebilir format
:
print("{:02d}".format(1))
Python 3.6+ için aynı davranış f-stringleri ile elde edilebilir :
print(f"{1:02d}")
x = "%02d.txt" % i
TypeError öğesini yükseltir ('str' ve 'int' nesnelerini birleştiremez), ancak oluşturmaz x = "%02d.txt" % (i,)
. İlginç. Acaba bu nerede belgelendi
%
dize formatlayıcı kullanırken sizi güvenli bir tarafa götürdüğünü bilmiyordum .
Şunları kullanabilirsiniz str.zfill
:
print(str(1).zfill(2))
print(str(10).zfill(2))
print(str(100).zfill(2))
baskılar:
01
10
100
"{1:02d}"
yerine değişkenler olamaz 2
(dinamik bir işlev oluşturuyorsunuz gibi).
Python 2.6+ ve 3.0+ sürümlerinde format()
string yöntemini kullanırsınız:
for i in (1, 10, 100):
print('{num:02d}'.format(num=i))
veya yerleşik (tek bir numara için) kullanarak:
print(format(i, '02d'))
Bkz PEP-3101 yeni biçimlendirme işlevleri için belgelere.
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
baskılar:
01
10
100
One zero:{0:02}, two zeros: {0:03}, ninezeros: {0:010}'.format(6)
print '{:02}'.format(1)
In Python> = 3.6 ve öz olarak kullanarak başlanan yeni f-dizeleri ile yapabilirsiniz:
f'{val:02}'
değişkenin adıyla ve a arasında val
bir fill
değer yazdırır .0
width
2
Özel örneğiniz için bunu bir döngüde güzelce yapabilirsiniz:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
hangi baskılar:
01
10
100
F-dizeleri hakkında daha fazla bilgi için , tanıtıldıkları PEP 498'e bakınız .
x = [1, 10, 100]
for i in x:
print '%02d' % i
sonuç:
01
10
100
Oku % kullanarak biçimlendirme dize hakkında daha fazla bilgi belgelerinde.
Ya da başka bir çözüm.
"{:0>2}".format(number)
"{0:0>2}".format(number)
eğer birisi nLeadingZeros isteyecekse, şunları da yapabileceğini not etmelidir:"{0:0>{1}}".format(number, nLeadingZeros + 1)
Bir biçim dizesi kullanın - http://docs.python.org/lib/typesseq-strings.html
Örneğin:
python -c 'print "%(num)02d" % {"num":5}'
Bunu nasıl yaparım:
str(1).zfill(len(str(total)))
Temel olarak zfill, eklemek istediğiniz önde gelen sıfırların sayısını alır, bu nedenle en büyük sayıyı almak, bir dizeye dönüştürmek ve uzunluğu elde etmek kolaydır:
Python 3.6.5 (varsayılan, 11 Mayıs 2018, 04:00:52) [GCC 8.1.0] Linux üzerinde Daha fazla bilgi için "yardım", "telif hakkı", "kredi" veya "lisans" yazın. >>> toplam = 100 >>> yazdır (str (1) .zfill (len (str (toplam))))) 001 >>> toplam = 1000 >>> yazdır (str (1) .zfill (len (str (toplam))))) 0001 >>> toplam = 10000 >>> yazdır (str (1) .zfill (len (str (toplam))))) 00001 >>>
Bunu f dizeleri ile yapabilirsiniz .
import numpy as np
print(f'{np.random.choice([1, 124, 13566]):0>8}')
Bu, 8 sabit uzunluğunu yazdıracak ve gerisini önde olacak şekilde yerleştirecektir 0
.
00000001
00000124
00013566
df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x))
5, toplam basamak sayısıdır.
Bu bağlantıyı kullandım: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/