Python: '{:,}'.format() 为什么有效?

4

在codewars中有一个编程练习,需要编写一个函数,该函数接受一个整数并输出带货币格式的字符串。例如:123456->"123,456"

我有一个解决方案,但它比使用字符串格式化的这个方案要丑陋得多:

def to_currency(price):
  return '{:,}'.format(price)

我已经阅读了文档,但是我仍然不知道这个到底是如何工作的?


1
请参阅PEP 378 - Peter Wood
3个回答

8

您可以使用Python的格式化语言,例如:

'{name:format}'.format(...)

name是可选的,也可以为空:

'{:format}'.format(...)
format是格式说明符。如果没有给出,通常会从传递给format(...)的参数类型中推断出来。
在这种情况下,format,,它指示Python添加分组分隔符,就像所需的那样。 来自https://docs.python.org/2/library/string.html#formatspec:
引用:

选项表示使用逗号作为千位分隔符。 对于区域设置感知的分隔符,请改用n整数表示类型。


6

Python的格式化字符串语法指出,冒号:引入了格式说明符,其定义如下:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]

以下内容都是可选的,其中

选项','表示使用逗号作为千位分隔符。若要使用与区域设置相关的分隔符,请改用整数显示类型'n'。


我喜欢你的答案比我的好 :) - Marcus Müller

0

来自文档

Using the comma as a thousands separator:

>>>
>>> '{:,}'.format(1234567890)
'1,234,567,890'

解释

:引入了格式说明符。

,格式说明符表示使用逗号作为千位分隔符。它在Python 2.7和3.1版本中添加,并在PEP 0378中有更详细的描述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接