2017-03-21 4 views
3

Ich weiß, dass theoretisch Ziffern in großen Zahlen können von Tausenden zur besseren Lesbarkeit gruppiert werden:Wie setze ich ein benutzerdefiniertes Tausendertrennzeichen?

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
'en_US.UTF-8' 
>>> locale.format('%d', 1234567890, grouping=True) 
'1,234,567,890' 
>>> "{:n}".format(1234567890) 
'1,234,567,890' 

jedoch überraschend, wird dies für jede locale nicht:

>>> locale.setlocale(locale.LC_ALL, 'pl_PL.UTF-8') 
'pl_PL.UTF-8' 
>>> locale.format('%d', 1234567890, grouping=True) 
'1234567890' 
>>> "{:n}".format(1234567890) 
'1234567890' 

Warum Zahlen sind nicht formatiert? Ich finde das komisch. Ich würde erwarten, dass etwas wie 1 234 567 890 gedruckt wird.

Pro Format Specification Mini-Language können wir explizit zwei mögliche Trennzeichen erzwingen: ein Komma , und einen Unterstrich _. Leider ist ein Komma für Polnisch nicht geeignet, da es dort als Dezimaltrennzeichen verwendet wird, und eine Zahl wie 1_234_567_890 würde für die meisten Leute seltsam aussehen.

Können wir irgendwie einen schussfreien Raum erzwingen, der als Tausendertrennzeichen verwendet wird?

+3

Workaround: '" 1_234_567_890 ".replace (" _ ",". ') 'Gibt Ihnen, was Sie wollen – inspectorG4dget

+0

' locale.currency (var, symbol = False, grouping = True) ', da' pl_PL' enthält '.' Trennzeichen für Geldwerte. – TemporalWolf

+0

Mögliches Duplikat von [Wie wird die Nummer mit Kommas als Tausendertrennzeichen gedruckt?] (Http://stackoverflow.com/questions/1823058/how-to-print-number-with-commas-as-thoundands-separators) – Prune

Antwort

1

Die pl_PL Locale Tausende Separator scheint empty zu sein. Ich weiß nicht, ob das genau die übliche Verwendung in Polen darstellt, aber Python formatiert Ihre Nummer korrekt nach den Regeln des Gebietsschema pl_PL. Dies kann ein Fehler in den Länderdateien sein.

Soweit mir bekannt ist, gibt es keine Möglichkeit, die Tausender Trennzeichen und Dezimalzeichen manuell anzugeben.

Verwandte Themen