3

Ich möchte eine Tabelle in Python wie folgt drucken:Wie verwenden Sie mehrere Argumente in {}, wenn die .format() -Methode in Python

ist klar, ich möchte, dass die verwenden. format() -Methode, aber ich habe lange Floats, die wie folgt aussehen: 1464.1000000000001 Ich brauche die Floats gerundet werden, so dass sie so aussehen: 1464.10 (immer zwei Dezimalstellen, auch wenn beide Nullen sind, so kann ich nicht verwenden die runde() Funktion).

Ich kann die Schwimmer mit "{0:.2f}".format("1464.1000000000001") runden, aber dann nicht in schöne Tabellen drucken.

Ich kann sie in schöne Tabellen tun, indem Sie "{0:>15}.format("1464.1000000000001") tun, aber dann sind sie nicht gerundet.

Gibt es eine Möglichkeit, beides zu tun? Etwas wie "{0:>15,.2f}.format("1464.1000000000001")?

+2

Fast fertig: '. "{0:> 15.2f}" -Format (1464,1000000000001)' ist wahrscheinlich das, was Sie wollen. – Evert

+0

Kann '' round() 'nicht innerhalb von' format() verwendet werden? ' –

+0

Viele praktische Beispiele finden Sie unter https://pyformat.info/ (neben der [Standard-Python-Dokumentation] (https: //docs.python. org/3/library/string.html # Format-Spezifikation-Mini-Sprache)). – Evert

Antwort

5

Sie waren fast, entfernen Sie einfach das Komma (und in einer Float-Zahl passieren, kein String):

"{0:>15.2f}".format(1464.1000000000001) 

die Format Specification Mini-Language section Siehe:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 
fill  ::= <any character> 
align  ::= "<" | ">" | "=" | "^" 
sign  ::= "+" | "-" | " " 
width  ::= integer 
precision ::= integer 
type  ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" 

Breaking the oberes Format nach unten dann:

fill: <empty> 
align: < # left 
sign: <not specified> 
width: 15 
precision: 2 
type: `f` 

Demo:

>>> "{0:>15.2f}".format(1464.1000000000001) 
'  1464.10' 

Beachten Sie, dass für Zahlen, die Standard-Ausrichtung nach rechts, so dass die > weggelassen werden könnte.

+0

Wow, danke! Ich habe das Problem selbst gelöst, indem ich zwei separate Iterationen von .format() durchgeführt habe, und es war schrecklich, das ist viel eleganter. Ich konnte nichts über Google finden, also vielen Dank! –

3
"{0:15.2f}".format(1464.1000000000001) 

ich diese Seite immer finden, die für diese Sachen:

https://pyformat.info/

+0

Unnötig. Der Standardwert ist rechts. –

Verwandte Themen