2013-06-14 49 views
69

Können Sie einen Integer-Wert mit führenden Nullen mit der Funktion str.format anzeigen?Python fügen führende Nullen mit str.format hinzu

Beispiel Eingabe:

"{0:some_format_specifying_width_3}".format(1) 
"{0:some_format_specifying_width_3}".format(10) 
"{0:some_format_specifying_width_3}".format(100) 

gewünschter Ausgang:

"001" 
"010" 
"100" 

Ich weiß, dass sowohl zfill und % -basierte Formatierung (z.B. '%03d' % 5) dies erreichen kann. Allerdings möchte ich eine Lösung, die str.format verwendet, um meinen Code sauber und konsistent zu halten (ich formatiere die Zeichenfolge auch mit datetime-Attributen) und auch mein Wissen über die Format Specification Mini-Language zu erweitern.

+1

Sind 'max_width',' a', 'b' und 'c' Variablennamen oder Ist deine Eingabe eine Zeichenfolge? –

+0

Das sind nur einige Beispielvariablennamen. 'max_width' wurde für das Beispiel verwendet, um anzugeben, wie viele führende Nullen für die Beispielwerte notwendig wären. In meinem tatsächlichen Code enthält die zu formatierende Eingabe ein Datetime-Objekt und einige Ints, die ich mit führenden Nullen formatieren möchte. – butch

+0

Sie wollen also einen 1-Liner mit 'format' oder eine Funktion, die nichts anderes als rohe Python verwendet, würde ausreichen? –

Antwort

152
>>> "{0:0>3}".format(1) 
'001' 
>>> "{0:0>3}".format(10) 
'010' 
>>> "{0:0>3}".format(100) 
'100' 

Erläuterung:

{0 : 0 > 3} 
│ │ │ │ 
│ │ │ └─ Width of 3 
│ │ └─ Align Right 
│ └─ Fill with '0' 
└─ Element index 
+0

Ah, ich denke meine Beispiele wurden ein bisschen zu wörtlich interpretiert. Ich möchte einfach ein Format, das '" {0: some_format_specifying_width_four} ". Format (10)' produzieren '" 0010 "'. – butch

+1

Ich aktualisierte meine ursprünglichen Beispiele, um mehr Klarheit zu bieten – butch

+1

Redigierte meine Antwort. –

19

von Format examples, Nesting examples in der Python-Dokumentation Abgeleitet:

>>> '{0:0{width}}'.format(5, width=3) 
'005' 
+0

Ausgezeichnet! Ich akzeptiere @ F.J's Antwort, da ich es vorziehe, keine andere Variable für die Breite zu spezifizieren, obwohl diese Antwort in ihrer Explizität sehr pythonisch erscheint! – butch

+0

Das passiert, wenn Sie die Frage bearbeiten, nachdem sie beantwortet wurde. Ich bin froh, dass wir dir helfen konnten, deine Absicht zu klären. – msw

Verwandte Themen