python 货币格式_Python中的货币格式

13 个答案:

答案 0 :(得分:177)

请参阅locale模块。

这会进行货币(和日期)格式化。

>>> 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'

答案 1 :(得分:86)

2.7中的新功能

>>> '{:20,.2f}'.format(18446744073709551616.0)

'18,446,744,073,709,551,616.00'

答案 2 :(得分:39)

不太清楚为什么在网上(或在这个帖子上)没有提到它,但来自Edgewall人的Babel包(和Django实用程序)对于货币格式化(以及许多其他i18n任务)来说非常棒。这很好,因为它不需要像核心Python语言环境模块一样全局地完成所有事情。

OP给出的例子就是:

>>> import babel.numbers

>>> import decimal

>>> babel.numbers.format_currency( decimal.Decimal( "188518982.18" ), "GBP" )

£188,518,982.18

答案 3 :(得分:21)

这是一篇古老的文章,但我刚刚实施了以下解决方案:

不需要外部模块

不需要创建新功能

可以在线完成

处理多个变量

处理负数美元金额

代码:

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

显然,对于原始海报,只需为$切换£即可

答案 4 :(得分:16)

答案 5 :(得分:9)

如果您正在使用OSX且尚未设置区域设置模块设置,则第一个答案将无效,您将收到以下错误:

Traceback (most recent call last):File "", line 1, in 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')

答案 6 :(得分:3)

Python 3中的

"{:0,.2f}".format(float(your_numeric_value))完成了这项工作;它给出了类似以下几行之一的内容:

10,938.29

10,899.00

10,898.99

2,328.99

答案 7 :(得分:3)

哦,那是一个有趣的野兽。

我花了相当多的时间来做到这一点,有三个主要问题,从区域设置到区域设置:

- 货币符号和方向

- 千分隔符

- 小数点

我已经编写了我自己相当广泛的实现,这是kiwi python框架的一部分,请查看LGPL:ed源代码:

代码略微特定于Linux / Glibc,但不应该太难采用Windows或其他unix。

安装完成后,您可以执行以下操作:

>>> from kiwi.datatypes import currency

>>> v = currency('10.5').format()

然后会给你:

'$10.50'

'10,50 kr'

取决于当前选择的区域设置。

这篇文章的主要内容是它可以与旧版本的python一起使用。 locale.currency是在python 2.5中引入的。

答案 8 :(得分:2)

from babel.numbers import format_decimal

format_decimal(188518982.18, locale='en_US')

答案 9 :(得分:1)

#printing变量'Total:'的格式看起来像'9,348.237'

print ('Total:', '{:7,.3f}'.format(zum1))

其中'{:7,.3f}'在这种情况下格式化数字的空格数是一百万,带有3个小数点。

然后添加'.format(zum1)。 zum1是变量,具有我的特定程序中所有数字之和的大数字。变量可以是您决定使用的任何内容。

答案 10 :(得分:0)

我来看同样的事情,发现python-money还没有真正使用它,但也许两者的混合会很好

答案 11 :(得分:0)

converter = lambda amount, currency: "%s%s%s" %(

"-" if amount < 0 else "",

currency,

('{:%d,.2f}'%(len(str(amount))+3)).format(abs(amount)).lstrip())

然后,

>>> converter(123132132.13, "$")

'$123,132,132.13'

>>> converter(-123132132.13, "$")

'-$123,132,132.13'

答案 12 :(得分:0)

简单的python代码!

def format_us_currency(value):

value=str(value)

if value.count(',')==0:

b,n,v='',1,value

value=value[:value.rfind('.')]

for i in value[::-1]:

b=','+i+b if n==3 else i+b

n=1 if n==3 else n+1

b=b[1:] if b[0]==',' else b

value=b+v[v.rfind('.'):]

return '$'+(value.rstrip('0').rstrip('.') if '.' in value else value)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值