2012-05-31 21 views

Odpowiedz

80

Oczywiście, należy użyć metody .format. Np

print '{:10s} {:3d}  {:7.2f}'.format('xxx', 123, 98) 
print '{:10s} {:3d}  {:7.2f}'.format('yyyy', 3, 1.0) 
print '{:10s} {:3d}  {:7.2f}'.format('zz', 42, 123.34) 

wypisze

xxx  123 98.00 
yyyy   3  1.00 
zz   42 123.34 

Można dostosować rozmiary pól zgodnie z potrzebami. Zauważ, że .format działa niezależnie od print, aby sformatować ciąg znaków. Po prostu użyłem print, aby wyświetlić ciągi. Krótkie wyjaśnienie:

Format

10s ciągiem z 10 pomieszczeń, pozostawionych uzasadnione domyślnego formatu

3d liczbą całkowitą zastrzegając 3 spacje, prawy uzasadnione domyślnie

7.2f formacie float, zastrzegając 7 przestrzenie, 2 po przecinku, prawo domyślnie ustawione.

Istnieje wiele dodatkowych opcji do pozycji/ciągi formatu (wyściółka, lewo/prawo usprawiedliwiać itp), String Formatting Operations dostarczy więcej informacji.

+2

Dokładnie tego, czego szukałem, dziękuję! – anio

+4

Uwaga: '7.2f' wymusza precyzję 2, ale 7 to tylko _minimum_ szerokość. W przypadku danych wejściowych, które nie jive z formatami, nie można uzyskać szerokości 7. np. mimo że 12345.7 ma tylko 7 znaków, '' {: 7.2f} '. format (12345.7) 'ma szerokość 8. – jkmacc

+0

@jkmacc dobry punkt, dziękuję za jawne stwierdzenie tego (link zapewnia więcej informacji na ten temat i więcej , również na samym górze # 4, ale jest to bardziej wyraźne/łatwiejsze :) – Levon

Powiązane problemy