在python中使用本地化的千位分隔符和小数精度格式化数字

Posted

技术标签:

【中文标题】在python中使用本地化的千位分隔符和小数精度格式化数字【英文标题】:Formatting numbers with localized thousands separators and decimal precision in python 【发布时间】:2017-11-10 06:26:18 【问题描述】:

可以用 :

格式化具有小数精度的数字
print(":.2f".format(7654321.234567))

可以使用本地化的千位分隔符来格式化数字:

import locale
locale.setlocale(locale.LC_ALL, '')
print(":n".format(7654321.234567))

但是我怎样才能同时做到这两个呢?

我想在千位分隔符是空格的国家/地区打印7 654 321.23,在千位分隔符是逗号的国家/地区打印7,654,321.23?但我无法提前知道本地化分隔符是什么。

【问题讨论】:

更新是否满足您的要求? 差不多。一个完美的解决方案可以在 Jinja 环境中使用(即没有像 my_sep 这样的中间变量)。但我不确定是否可以只玩format。如果没有其他答案,我会在几天后接受您的答案! 啊,还有神社。那么为什么不将my_sep 保留为上下文变量呢? 【参考方案1】:

在点之前添加一个逗号 - 千位分隔符,并使用您所在地区的适当分隔符进行替换:

>>> my_sep = locale.localeconv()['thousands_sep']
>>> print(":,.2f".format(7654321.234567).replace(',', my_sep))
7 654 321.23

【讨论】:

以上是关于在python中使用本地化的千位分隔符和小数精度格式化数字的主要内容,如果未能解决你的问题,请参考以下文章

如何显示或隐藏数字中的千位分隔符

Python中的千位分隔符[重复]

如何将双精度值格式化为点后两位小数且分隔符为千位的字符串?

带有剃刀 MVC 和 js 的千位分隔符

整个项目中所有数字的千位角分隔符

如何让php的localeconv返回正确的千位分隔符