Gegeben:
a = 1
b = 10
c = 100
Wie zeige ich eine führende Null für alle Zahlen mit weniger als zwei Ziffern an?
Das ist,
01
10
100
In Python 2 können Sie Folgendes tun:
print "%02d" % (1,)
Grundsätzlich ist% wie printf
oder sprintf
.
Für Python 3. + kann dasselbe Verhalten erreicht werden mit:
print("{:02d}".format(1))
Für Python 3.6+ kann dasselbe Verhalten mit f-Strings erreicht werden:
print(f"{1:02d}")
Sie können str.zfill
verwenden:
print str(1).zfill(2)
print str(10).zfill(2)
print str(100).zfill(2)
druckt:
01
10
100
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
druckt:
01
10
100
Oder dieses:
print '{0:02d}'.format(1)
In Python> = 3.6 können Sie dies mit den neuen f-Strings tun, die mit folgendem Befehl eingeführt wurden:
f'{val:02}'
die die Variable mit dem Namen val
mit einem fill
Wert von 0
und einer width
von 2
druckt.
Für Ihr spezielles Beispiel können Sie dies in einer Schleife machen:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
welche druckt:
01
10
100
Weitere Informationen zu f-Strings finden Sie unter PEP 498 , wo sie eingeführt wurden.
x = [1, 10, 100]
for i in x:
print '%02d' % i
ergebnisse in:
01
10
100
Lesen Sie Weitere Informationen zur String-Formatierung mit% in der Dokumentation.
Der pythonische Weg, dies zu tun:
str(number).rjust(string_width, fill_char)
Auf diese Weise wird die ursprüngliche Zeichenfolge unverändert zurückgegeben, wenn ihre Länge größer als Zeichenfolge ist. Beispiel:
a = [1, 10, 100]
for num in a:
print str(num).rjust(2, '0')
Ergebnisse:
01
10
100
Oder eine andere Lösung.
"{:0>2}".format(number)
Verwenden Sie eine Formatzeichenfolge - http://docs.python.org/lib/typesseq-strings.html
Zum Beispiel:
python -c 'print "%(num)02d" % {"num":5}'
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
So mache ich es:
str(1).zfill(len(str(total)))
Im Grunde genommen nimmt zfill die Anzahl der führenden Nullen, die Sie hinzufügen möchten. Es ist also einfach, die größte Zahl zu verwenden, sie in eine Zeichenfolge umzuwandeln und die Länge wie folgt zu ermitteln:
Python 3.6.5 (Standardeinstellung: 11. Mai 2018, 04:00:52) [GCC 8.1.0] unter Linux Geben Sie "help", "copyright", "credits" oder "license" ein. Weitere Informationen . >>> gesamt = 100 >>> drucken (str (1) .zfill (len (str (gesamt)))) 001 >>> gesamt = 1000 >>> print (str (1) .zfill (len (str (total)))) 0001 >>> total = 10000 >>> print (str (1). zfill (len (str (total)))) 00001 >>>
Benutzen:
'00'[len(str(i)):] + str(i)
Oder mit dem Modul math
:
import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
df ['Col1'] = df ['Col1']. apply (Lambda x: '{0: 0> 5}'. Format (x)) (die 5 ist die Anzahl der Gesamtziffern)
Ich habe diesen Link benutzt: http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/
!/usr/bin/env python3
Copyright 2009-2017 BHG http://bw.org/
x = 5
while (x <= 15):
a = str("{:04}".format(x))
print(a)
x = x + 1;
s=1
s="%02d"%s
print(s)
das Ergebnis wird 01 sein
Basierend auf Ihren Tipps, lasse ich meine Arbeit funktionieren. Vielen Dank.
def number2binlist(number, leading = 8):
#Convert Binary to 0/1 list array with leading zeros, default 8
bin2dec = int(str(bin(number))[2:])
theformat = "{:0"+str(leading)+"d}"
dec2str = list(theformat.format(bin2dec))
output = [int(z) for z in dec2str]
output.reverse()
return output