Seite 1 von 1

Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 16:27
von nieselfriem
Hallo,

ich möchte gerne Währungsformate aus Integerwerte berechnen. Dazu rechne ich z.B. 1200*0.01 und dann soll der Wert von 12.00 wie folgt als Währung ausgeben werden

Code: Alles auswählen

>>> locale.setlocale(locale.LC_ALL, 'deu_deu')
'German_Germany.1252'
>>> c = locale.currency(12.5)
>>> print(str(c))
12,50 ?
Warum wird hier statt dem Eurozeichen ein Fragezeichen dargestellt. Wie kann ich das beheben. An dieser Stelle muss ich sagen, dass hier python 3.6.0 für Windows verwendete wird. Wie es auf anderen Plattformen aussieht, kann ich erst heute Abend testen ;)

Meine Frage ist nun, wie kann ich den Wert in "12,00 EU" oder "12,00 €" umwandeln?

VG niesel

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 17:23
von BlackJack
@nieselfriem: Warum rufst Du denn `str()` auf? Was wird ausgegeben wenn Du den `str()`-Aufruf durch einen `ascii()`-Aufruf ersetzt?

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 17:25
von snafu
Das müsste funktionieren:

Code: Alles auswählen

locale.setlocale(locale.LC_ALL, 'german')
print(locale.currency(12.5))
deu_deu aber eigentlich auch.

Eventuell mal die Eingabeaufforderung komplett neustarten. Möglicherweise wurde etwas verstellt.

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 17:42
von nieselfriem
hat sich geklärt,

die Darstellung, dass es ein "?" statt dem "€" in der Windows-cmd probelm zu sein. Wird dieser Wert als String an ein QT Element weiter gegeben funktioniert es einwandfrei

Danke für die Hilfe

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 17:54
von snafu
Hatte ich auch schon. cmd.exe verhält sich nach längerem Gebrauch manchmal seltsam. Wie gesagt: Oft hilft dann die Überprüfung in einer neugestarteten cmd.exe.

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 19:42
von BlackJack
@snafu: Das hat mit der CMD und mit 'german' vs 'deu_deu' nichts zu tun sondern mit Kodierungen und das man die halt nicht raten kann/sollte. Und eventuell auch damit das nicht jede Kodierung auch alle Zeichen kodieren kann.

Re: Währungsformate formatieren

Verfasst: Sonntag 12. März 2017, 22:09
von snafu
setlocale() stellt doch die Zeichenkodierung *und* die Art, wie sich sprachspezifische Funtionen verhalten, um. Insofern wäre ich bisher schon davon ausgegangen, dass es etwas damit zu tun hat...

Und raten muss ich nicht wirklich, wenn ich weiß, dass ich eine deutsche Kodierung will. Das Raten spielt doch erst eine Rolle, wenn man sprachlich (bzw kodierungsmäßig) unbekannte Quellen bearbeiten muss.

Re: Währungsformate formatieren

Verfasst: Montag 13. März 2017, 01:35
von BlackJack
@snafu: `setlocale()` mag die Kodierung umstellen, aber doch nur für das eigene Programm. Und in wie weit Python weiss welche Kodierung da kommt wenn man sie nicht angibt, weiss ich auch nicht. 'german' oder 'deu_deu' sind jedenfalls keine Kodierungen. Was das Programm das am anderen Ende von `stdout` auf Bytes wartet, weiss man dadurch nicht. Das ist eine ”sprachlich unbekannte Quelle”, oder Senke in diesem Fall. Und eine „deutsche Kodierung“ gibt es nicht.