wake-up-neo.com

Wie formatiere ich eine Zahl mit einer variablen Anzahl von Ziffern in Python?

Angenommen, ich wollte die Nummer 123 mit einer variablen Anzahl von gepolsterten Nullen auf der Vorderseite anzeigen.

Wenn ich es zum Beispiel in 5 Ziffern anzeigen wollte, hätte ich Ziffern = 5, die mir geben:

00123

Wenn ich es in 6 Ziffern anzeigen wollte, hätte ich Ziffern = 6 und gebe:

000123

Wie würde ich das in Python machen?

57
Eddy

Es gibt eine String-Methode namens zfill:

>>> '12344'.zfill(10)
0000012344

Die linke Seite der Zeichenkette wird mit Nullen aufgefüllt, um die Zeichenkettenlänge N (in diesem Fall 10) zu erhalten.

36
Donald Miner

Wenn Sie es in einer formatierten Zeichenfolge mit der format() -Methode verwenden, die der älteren Formatierung ''% Vorgezogen wird

>>> 'One hundred and twenty three with three leading zeros {0:06}.'.format(123)
'One hundred and twenty three with three leading zeros 000123.'

Sehen
http://docs.python.org/library/stdtypes.html#str.format
http://docs.python.org/library/string.html#formatstrings

Hier ist ein Beispiel mit variabler Breite

>>> '{num:0{width}}'.format(num=123, width=6)
'000123'

Sie können das Füllzeichen sogar als Variable angeben

>>> '{num:{fill}{width}}'.format(num=123, fill='0', width=6)
'000123'
157
John La Rooy
'%0*d' % (5, 123)

Mit Einführung formatierter String-Literale (kurz "f-Strings") in Python 3.6 ist es nun möglich, mit einer kürzeren Syntax auf zuvor definierte Variablen zuzugreifen:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

Die Beispiele von John La Rooy können wie folgt geschrieben werden

In [1]: num=123
   ...: fill='0'
   ...: width=6
   ...: f'{num:{fill}{width}}'

Out[1]: '000123'
6
joelostblom
print "%03d" % (43)

Druckt

043

5
st0le

Verwenden Sie die Zeichenfolgenformatierung

print '%(#)03d' % {'#': 2}
002
print '%(#)06d' % {'#': 123}
000123

Mehr Infos hier: Linktext

1
Blue Peppers