将'decimal-mark'千位分隔符添加到数字中

Car*_*bet 52 python format locale number-formatting digit-separator

我如何格式化10000001.000.000在Python?在哪里'.' 是十进制标记千位分隔符.

Mik*_*kel 104

如果要添加千位分隔符,可以编写:

>>> '{0:,}'.format(1000000)
'1,000,000'
Run Code Online (Sandbox Code Playgroud)

但它只适用于Python 2.7及更高版本.

格式字符串语法.

在旧版本中,您可以使用locale.format():

>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'en_AU.utf8'
>>> locale.format('%d', 1000000, 1)
'1,000,000'
Run Code Online (Sandbox Code Playgroud)

使用的额外好处locale.format()是它将使用您的语言环境的千位分隔符,例如

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'de_DE.utf-8')
'de_DE.utf-8'
>>> locale.format('%d', 1000000, 1)
'1.000.000'
Run Code Online (Sandbox Code Playgroud)

  • 对于浮点数,语法是`{:6,.2f}`其中`6`是字段宽度,'2`是精度.逗号的位置使我绊倒了一点. (2认同)

utd*_*mir 17

我真的不明白; 但这是我理解的:

您要将1123000转换为1,123,000.你可以使用格式来做到这一点:

http://docs.python.org/release/3.1.3/whatsnew/3.1.html#pep-378-format-specifier-for-thousands-separator

例:

>>> format(1123000,',d')
'1,123,000'
Run Code Online (Sandbox Code Playgroud)


jpi*_*ihl 13

只是在这里扩展答案:)

我需要都有千分之一的分隔符并限制浮点数的精度.

这可以通过使用以下格式字符串来实现:

> my_float = 123456789.123456789
> "{:0,.2f}".format(my_float)
'123,456,789.12'
Run Code Online (Sandbox Code Playgroud)

这描述了format()-specifier的迷你语言:

[[fill]align][sign][#][0][width][,][.precision][type]
Run Code Online (Sandbox Code Playgroud)

资料来源:https://www.python.org/dev/peps/pep-0378/#current-version-of-the-mini-language

  • 如果他想得到以下输出怎么办:''123.456.789,12'`? (3认同)

Gio*_* PY 6

一个主意

def itanum(x):
    return format(x,',d').replace(",",".")

>>> itanum(1000)
'1.000'
Run Code Online (Sandbox Code Playgroud)