Wie formatiere ich 1000000
a 1.000.000
in Python?, wobei das '.' das Tausendertrennzeichen für das Dezimalzeichen ist.
Wenn Sie mit Währungen arbeiten, können Sie auch das Hilfsmittel babel.numbers.format_currency verwenden.
Wie formatiere ich 1000000
a 1.000.000
in Python?, wobei das '.' das Tausendertrennzeichen für das Dezimalzeichen ist.
Wenn Sie ein Tausendertrennzeichen hinzufügen möchten, können Sie schreiben:
>>> '{0:,}'.format(1000000)
'1,000,000'
Es funktioniert aber nur in Python 2.7 und höher.
Ver Format-String-Syntax .
In älteren Versionen können Sie mit locale.format() :
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'en_AU.utf8'
>>> locale.format('%d', 1000000, 1)
'1,000,000'
den zusätzlichen Vorteil der Verwendung locale.format()
ist, dass es das Tausendertrennzeichen Ihres Gebietsschemas verwendet, z. B.
>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')
'de_DE.utf-8'
>>> locale.format('%d', 1000000, 1)
'1.000.000'
Wenn Sie mit Währungen arbeiten, können Sie auch das Hilfsmittel babel.numbers.format_currency verwenden.
Für Floats lautet die Syntax {:6,.2f}
donde 6
ist die Feldbreite und 2
ist die Genauigkeit. Die Platzierung des Kommas hat mich ein wenig verwirrt.
Ich erweitere die Antwort hier nur ein wenig :)
Ich musste sowohl ein Tausendstel-Trennzeichen haben als auch die Genauigkeit einer Fließkommazahl begrenzen.
Dies kann durch die Verwendung der folgenden Formatzeichenfolge erreicht werden:
> my_float = 123456789.123456789
> "{:0,.2f}".format(my_float)
'123,456,789.12'
Dies beschreibt die format()
-Spezialisierung der Mini-Sprache:
[[fill]align][sign][#][0][width][,][.precision][type]
Quelle: https://www.python.org/dev/peps/pep-0378/#current-version-of-the-mini-language
@dot.Py könnte er ein entsprechendes Gebietsschema einstellen locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')
dann verwenden Sie ("{:.%dn}" % (math.log10(my_float)+3)).format(my_float)
Die Formatzeichenkette "n" ist jedoch das lokalisierte Äquivalent von "g" und nicht von "f", so dass das Präzisionsfeld unübersichtlich wird.
Verwendung von itertools
kann Ihnen etwas mehr Flexibilität bieten:
>>> from itertools import zip_longest
>>> num = "1000000"
>>> sep = "."
>>> places = 3
>>> args = [iter(num[::-1])] * places
>>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1]
'1.000.000'
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Bitte klären Sie Ihre Frage. Zeigen Sie etwas Code, nennen Sie den Datentyp des Objekts, das Sie ausdrucken möchten, geben Sie ein Beispiel für die Ausgabe.
0 Stimmen
Sie können nicht mehr als einen Dezimalpunkt in einer Zahl haben. Was ist
1.000.000
bedeuten soll? Meinen Sie Kommas?33 Stimmen
@Noufal: in einigen Gegenden,
.
verwendet wird, statt,
um Tausende zu trennen.0 Stimmen
Wirklich? Das war mir nicht bewusst. Ich glaube aber nicht, dass man sie in diesen Ländern "Dezimalpunkte" nennen würde.
3 Stimmen
@NoufalIbrahim, Das nennt man Dezimalzeichen und Wikipedia-Seite erklärt, welche Länder unterschiedliche Dezimalzeichen verwenden.
0 Stimmen
Wer sich für dieses Thema interessiert, sollte sich Sehen Sie sich meine Antwort an (zu einer ähnlichen Frage), in der die Grenzen der Verwendung der
format()
Lösung und hat einen Code geschrieben, der diese Aufgabe erfüllt.