[python] 파이썬의 통화 형식

Python을 사용하여 188518982.18에서 £ 188,518,982.18과 같은 숫자를 형식화하려고합니다.

어떻게해야합니까?



답변

로케일 모듈을 참조하십시오 .

통화 및 날짜 형식을 지정합니다.

>>> import locale
>>> locale.setlocale( locale.LC_ALL, '' )
'English_United States.1252'
>>> locale.currency( 188518982.18 )
'$188518982.18'
>>> locale.currency( 188518982.18, grouping=True )
'$188,518,982.18'


답변

2.7의 새로운 기능

>>> '{:20,.2f}'.format(18446744073709551616.0)
'18,446,744,073,709,551,616.00'

http://docs.python.org/dev/whatsnew/2.7.html#pep-0378


답변

왜 온라인에서 (또는이 스레드에서) 더 언급되지 않았는지 확실하지 않지만 Edgewall 직원 의 Babel 패키지 (및 Django 유틸리티)는 통화 형식 (및 기타 많은 i18n 작업)에 적합합니다. 그것은 핵심 파이썬 로케일 모듈과 같은 모든 것을 세계적으로 할 필요가 없기 때문에 좋습니다.

OP가 제공 한 예는 다음과 같습니다.

>>> import babel.numbers
>>> import decimal
>>> babel.numbers.format_currency( decimal.Decimal( "188518982.18" ), "GBP" )
£188,518,982.18


답변

이것은 고대 게시물이지만 방금 다음과 같은 솔루션을 구현했습니다.

  • 외부 모듈이 필요하지 않습니다
  • 새로운 기능을 만들 필요가 없습니다
  • 인라인으로 수행 가능
  • 여러 변수를 처리
  • 마이너스 달러 금액 처리

암호:

num1 = 4153.53
num2 = -23159.398598

print 'This: ${:0,.0f} and this: ${:0,.2f}'.format(num1, num2).replace('$-','-$')

산출:

This: $4,154 and this: -$23,159.40

그리고 원래 포스터, 분명히, 단지 전환 $을 위해£


답변

내 로케일 설정이 불완전한 것처럼 보였으 므로이 SO 답변 너머를 너무 많이보고

http://docs.python.org/library/decimal.html#recipes

OS 독립적

여기서 공유하고 싶었습니다.


답변

OSX를 사용 중이고 로케일 모듈 설정을 아직 ​​설정하지 않은 경우이 첫 번째 응답이 작동하지 않으면 다음 오류가 발생합니다.

Traceback (most recent call last):File "<stdin>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 221, in currency
raise ValueError("Currency formatting is not possible using "ValueError: Currency formatting is not possible using the 'C' locale.

이를 해결하려면 다음을 사용해야합니다.

locale.setlocale(locale.LC_ALL, 'en_US')


답변

"{:0,.2f}".format(float(your_numeric_value))파이썬 3에서는 그 일을합니다; 다음 줄 중 하나와 같은 것을 제공합니다.

10,938.29
10,899.00
10,898.99
2,328.99