【问题标题】: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。 任何帮助表示赞赏!

【问题讨论】:

  • 你的意思是千位分隔符?

标签: python optimization numbers decimal


【解决方案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 中做到这一点 :(
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2012-10-21
  • 2023-03-30
  • 2020-09-06
  • 2010-12-21
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多