Das ist ein bisschen hacky, aber:
format(12345678.46, ',').replace(',', ' ').replace('.', ',')
Wie in einem format_spec in Format specification mini-language, beschrieben:
Das '' Optionssignale die Verwendung eines Komma für ein Tausendertrennzeichen.
Dann ersetzen wir einfach jedes Komma durch ein Leerzeichen, dann den Dezimalpunkt mit einem Komma, und wir sind fertig.
Für komplexere Fälle mit str.format
statt format
, geht die format_spec nach dem Doppelpunkt, wie in:
'{:,}'.format(12345678.46)
Siehe PEP 378 für weitere Einzelheiten.
Inzwischen, wenn Sie nur versuchen, die Standard-Gruppierung und Trennzeichen verwenden für locale Ihres Systems gibt es einfachere Wege, dass-das n
Formattyp zu tun, oder die locale.format
Funktion usw. Zum Beispiel:
>>> locale.setlocale(locale.LC_NUMERIC, 'pl_PL')
>>> format(12345678, 'n')
12 345 678
>>> locale.format('%.2f' 12345678.12, grouping=True)
12 345 678,46
>>> locale.setlocale(locale.LC_NUMERIC, 'fr_FR')
>>> locale.format('%.2f' 12345678.12, grouping=True)
12345678,46
>>> locale.setlocale(locale.LC_ALL, 'en_AU')
>>> locale.format('%.2f' 12345678.12, grouping=True)
12,345,678.46
Wenn Ihr Systemgebietsschema ist, sagen, pl_PL
, nur locale.setlocale(locale.LC_NUMERIC)
Aufruf (oder locale.setlocale(locale.LC_ALL)
) die polnischen Einstellungen aufheben, die Sie wollen, aber die gleiche Person, die Ihr Programm in Australien ausgeführt wird die australischen Einstellungen aufheben, die er möchte.
Was ist ' '12345678,46123''? –
@AshwiniChaudhary: Normalerweise setzen die Leute keine Tausendertrennzeichen nach dem Dezimalpunkt.Mindestens PEP 378 Formatierung tut nicht, und auch keine LC_NUMERIC kann ich ausgraben. – abarnert
Versuchen Sie, Leerzeichen aus dem "Ende" nicht von Anfang an – Zaffy