我在一个使用多种语言的网站上工作,为了相应地显示价格/货币,我们使用了 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/