Verwendungsbeispiel:
print format(1234, ",d") # -> 1,234
print "{:,d}".format(1234) # -> 1,234
Hinweis: Während diese neue Funktion auf jeden Fall praktisch ist, ist es eigentlich nicht alles, was viel schwieriger, das locale
Modul zu verwenden, da mehrere andere vorgeschlagen haben. Der Vorteil besteht darin, dass numerische Ausgaben automatisch den richtigen Tausender-Konventionen (und anderen) folgen können, die in verschiedenen Ländern bei der Ausgabe von Dingen wie Zahlen, Daten und Zeiten verwendet werden. Es ist auch sehr einfach, die Standardeinstellungen von Ihrem Computer in Kraft zu setzen, ohne eine Reihe von Sprach- und Ländercodes zu lernen. Alles, was Sie tun müssen, ist:
import locale
locale.setlocale(locale.LC_ALL, '') # empty string for platform's default settings
Nachdem ich, dass Sie nur den allgemeinen 'n'
Typencode für die Ausgabe Zahlen (beide integer und float) verwenden können.Wo ich bin, werden verwendet Kommas als Tausendertrennzeichen, so dass nach der Lokalisierungs-Einstellungen, wie oben gezeigt, ist es das, was passieren würde:
print format(1234, "n") # -> 1,234
print "{:n}".format(1234) # -> 1,234
Ein großer Teil der restlichen Welt Perioden statt Kommas für diesen Zweck verwendet, so die Einstellung der Standardgebietsschema an verschiedenen Orten (oder explizit den Code für einen solchen Bereich in einem setlocale()
Aufruf spezifiziert) erzeugt die folgende:
print format(1234, "n") # -> 1.234
print "{:n}".format(1234) # -> 1.234
Ausgabe basierend auf dem 'd'
oder ',d'
Formatierungs Typspezifizierer ist unbeeinflusst von der Verwendung (oder Nichtgebrauch) von setlocale()
. Der 'd'
-Spezifizierer ist jedoch betroffen, wenn Sie stattdessen die Funktionen locale.format()
oder locale.format_string()
verwenden.
-1 Leider ist das ** kaputt **; es verewigt die Vererbung des Gebietsschema-Moduls - ** es funktioniert nicht richtig mit Unicode **. Versuchen Sie 'format (1234, u 'n' ') in einem Gebietsschema (z. B. Französisch, Russisch), wo das Tausendertrennzeichen ein NO-BREAK SPACE ist. Sie erhalten die Lieblingsausnahme der Neulinge: 'UnicodeDecodeError: 'ascii' Codec kann Byte 0xa0 nicht decodieren ...' –
@John Machin: Für die Aufzeichnung wurden die meisten upvotes zu dieser Antwort gemacht, bevor ich die Anmerkung über die Verwendung hinzufügte 'locale' - und für alle Erleuchtung, was * ist * der aktuelle Grund für die Operation in einer locale-spezifischen Weise, die Unicode behandelt? Vielen Dank. – martineau
(1) Wann wurden die Upvotes erstellt? (2) Es gibt keine Python-2.X-unterstützte Erleuchtung, nur ein Kludn: 'format (1234," n "). Decode (locale.getpreferredencoding())' :-( –