打印数字时添加千位分隔符[重复]

Posted

技术标签:

【中文标题】打印数字时添加千位分隔符[重复]【英文标题】:Adding thousand separator while printing a number [duplicate] 【发布时间】:2013-09-25 15:58:57 【问题描述】:

我真的不知道这个问题的“名称”,所以它可能是一个错误的标题,但问题很简单,如果我有一个数字

例如:

number = 23543
second = 68471243

我想让print()像这样。

23,543 68,471,243

我希望这足以解释或添加 cmets。 任何帮助表示赞赏!

【问题讨论】:

你的意思是千位分隔符? 【参考方案1】:

如果您只需要添加逗号作为千位分隔符并且使用 Python 3.6 或更高版本:

print(f"number:,g")

这使用格式化的字符串文字样式。大括号0 中的项目是要格式化为字符串的对象。冒号: 表示应该修改输出。逗号, 表示应使用逗号作为千位分隔符,g 用于一般数字。 [1]

对于较旧的 Python 3 版本,没有 f 字符串:

print("0:,g".format(number))

这使用 str-objects [2] 的格式方法。大括号 0 中的项目是字符串中的占位符,冒号 : 表示应该修改内容。逗号, 表示应使用逗号作为千位分隔符,g 用于通用数字 [3]。然后调用字符串对象的format-方法,并将变量number 作为参数传递。

68,471,24,3 对我来说似乎有点奇怪。是不是打错字了?

Formatted string literals

Python 3 str.format()

Python 3 Format String Syntax

【讨论】:

我更新了答案以包含新的格式化字符串文字 -version。【参考方案2】:

最简单的方法是将语言环境设置为 en_US。

例子:

import locale
locale.setlocale(locale.LC_ALL, 'en_US')
number = 23543
second = 68471243
print locale.format("%d", number, grouping=True)
print locale.format("%d", second, grouping=True)

打印:

23,543
68,471,243

【讨论】:

错误:不支持的区域设置return _setlocale(category, locale) 您使用的是哪个操作系统? Windows 7 但这适用于 Linux? 在 linux 上,您可以轻松安装新的语言环境。我不知道如何在 Windows 7 中做到这一点 :(

以上是关于打印数字时添加千位分隔符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript 如何使用逗号作为千位分隔符在JavaScript中打印数字

Javascript千位分隔符/字符串格式[重复]

PHP在总和中添加千位分隔符[重复]

PHP在数字中添加千位分隔符并保持前导零

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

将千位分隔符添加到任何数字,即使它包含特殊字符