python - Babel numbers format_currency 函数

标签 python python-2.7 currency python-babel

我在一个使用多种语言的网站上工作,为了相应地显示价格/货币,我们使用了 babel 库。问题是调用 format_currency 时它总是返回美分部分,即使价格被显式转换为整数也是如此。

例子:

>>> print format_currency(100, 'EUR', locale='fr_FR')
100,00 €

>>> print format_currency(int(100), 'EUR', locale='fr_FR')
100,00 €

有没有一种方法可以让返回值排除美分部分,使其具有类似的东西

>>> print format_currency(int(100), 'EUR', locale='fr_FR')
100 €

最佳答案

您可以指定自定义格式:

format_currency(100, 'EUR', format=u'#,##0\xa0¤', locale='fr_FR')

参见 LDML markup spec更多细节; \xa0 字节是 U+00A0 NO-BREAK SPACE特点;而不是常规空间。

对于 fr_FR 默认值是 #,##0.00\xa0¤.00 部分表示小数部分应该是印有两位数字,如果不存在则填充。我上面的示例只是删除了小数部分,如果数字不是精确的整数,您也可以使用 .## 来允许分数,但请注意,在这种情况下 .5 打印的值没有第二位数字!

演示:

>>> from babel.numbers import format_currency
>>> print format_currency(100, 'EUR', format=u'#,##0\xa0¤', locale='fr_FR')
100 €
>>> print format_currency(100.0, 'EUR', format=u'#,##0.##\xa0¤', locale='fr_FR')
100 €

关于python - Babel numbers format_currency 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426217/

相关文章:

Python collections.Counter : most_common complexity

python - 在 python 上不断收到此错误 E902 EOF

python-2.7 - 在 OpenCV 库中检测人脸的 "scaleFactor"的最佳值应该是多少

javascript - 货币正则表达式 (JavaScript)

C# 格式化货币给定货币代码(如 USD/GBP/FRF)

python - 我可以对当前正在写入的文件使用 fdpexpect 吗?

python - 在新文件目录时运行 bash 脚本?

python - 打印文件在截断和重写之前不打印任何内容

python - 什么是 C++ 中 "new"的 python 等价物

string - 如何将货币字符串转换为数值?