2013-06-14 15 views
69

Czy można wyświetlić wartość całkowitą z wiodącymi zerami za pomocą funkcji str.format?Python dodaje wiodące zera za pomocą str.format

Przykład wkład:

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

sygnał wyjściowy:

"001" 
"010" 
"100" 

wiem, że zarówno zfill i % formatowania -na (np '%03d' % 5) można to osiągnąć. Jednak chciałbym, aby rozwiązanie, które używa str.format, aby mój kod był czysty i spójny (jestem również formatowania ciąg z atrybutami datetime), a także poszerzyć moją wiedzę o Format Specification Mini-Language.

+1

to 'max_width',' A', 'B' i' C' nazwy zmiennych lub czy twój wpis jest ciągiem? –

+0

To tylko niektóre przykładowe nazwy zmiennych. 'max_width' został użyty dla przykładu, aby wskazać, ile początkowych zer byłoby konieczne dla przykładowych wartości. W moim prawdziwym kodzie dane wejściowe do formatu zawierają obiekt datetime i niektóre ints, które chciałbym sformatować z wiodącymi zerami. – butch

+0

, więc chcesz 1-liniowej z 'format' lub funkcją, która używa nic oprócz surowego python wystarczy? –

Odpowiedz

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

Objaśnienie:

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

Ach, myślę, że moje przykłady zostały zinterpretowane nieco zbyt dosłownie. Po prostu chcę formatu, który tworzy "{0: some_format_specifying_width_four}" .format (10) 'produkuj' "0010" '. – butch

+1

Zaktualizowałem moje oryginalne przykłady, aby zapewnić większą przejrzystość. – butch

+1

Zmieniono moją odpowiedź. –

19

Pochodzące z Format examples, Nesting examples w docs Pythona:

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

Doskonale! Akceptuję odpowiedź @ F.J., ponieważ nie chcę określać innej zmiennej dla szerokości, chociaż ta odpowiedź wydaje się bardzo pytonowa w swojej oczywistości! – butch

+0

To się stanie, gdy edytujesz pytanie po jego odpowiedzi. Cieszę się, że mogliśmy pomóc ci wyjaśnić twoje zamiary. – msw

Powiązane problemy