まず第一に、私はこの投稿を(とりわけ)試しました: Currency format in Python 。私の変数には影響しません。私が最も推測しているのは、Python 3を使用しており、それがPython 2のコードだったからだということです。
1234.5などのフロートを「$ 1,234.50」などの文字列に変換したい。これをどうやってやるのですか?
念のため、コンパイルしたが、変数には影響しなかったコードを次に示します。
money = float(1234.5)
locale.setlocale(locale.LC_ALL, '')
locale.currency(money, grouping=True)
また失敗しました:
money = float(1234.5)
print(money) #output is 1234.5
'${:,.2f}'.format(money)
print(money) #output is 1234.5
Python 3.xおよび2.7では、これを簡単に行うことができます。
>>> '${:,.2f}'.format(1234.5)
'$1,234.50'
:,
は3桁ごとの区切り記号としてカンマを追加し、.2f
は最後に文字列を小数点以下2桁に制限します(または、場合によっては小数点以下2桁までゼロを追加します)。
-$1,000.00
ではなく$-1,000.00
のような負の値をフォーマットし、locale
を使用したくない場合は、@ JustinBarberの例に基づいて@ eric.frederichのコメントに注意してください。
def as_currency(amount):
if amount >= 0:
return '${:,.2f}'.format(amount)
else:
return '-${:,.2f}'.format(-amount)
python 3では、次を使用できます。
import locale
locale.setlocale( locale.LC_ALL, 'English_United States.1252' )
locale.currency( 1234.50, grouping = True )
出力
'$1,234.50'
個人的には、私はこれがはるかに好きです(これは、当然のことながら、現在選択されている「ベストアンサー」を書く別の方法です):
money = float(1234.5)
print('$' + format(money, ',.2f'))
または、複数の文字列を「追加」してそれらを結合するのが本当に嫌な場合は、代わりにこれを行うことができます:
money = float(1234.5)
print('${0}'.format(format(money, ',.2f')))
どちらのスタイルも読みやすいと思います。 :-)
(もちろん、エリックも示唆しているように、負の値を処理するためにIf-Elseを組み込むことができます)