Объединение форматов Python 3 (попытка одновременно использовать тысячный разделитель и два десятичных знака)

В Python 3, как я могу сделать несколько форматов одновременно:

Итак, я хочу, чтобы число не имело десятичных знаков и имело разделитель тысяч:

число = 80000,00

Я хочу, чтобы это было 80 000

Я знаю, что могу делать эти две вещи по отдельности, но как мне их совместить?

Этот вопрос был задан для Python 2.7, но я не вижу объяснения для Python 3. Заранее спасибо!


person tony    schedule 05.06.2015    source источник


Ответы (2)


In [155]: '{:,.0f}'.format(80000.00)
Out[155]: '80,000'

, в строке формата {:,.0f}`` tellsformatto use comma separators, and the.0tellsformat`, чтобы включить ноль цифры после запятой.

В качестве альтернативы вы можете установить локаль, а затем использовать locale.format:

import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
print(locale.format("%d", 80000.00, grouping=True))
# 80,000

но обратите внимание, что размещение запятых зависит от локали. Например, если на вашем компьютере установлена ​​локаль en_IN (английский, Индия), то

locale.setlocale(locale.LC_ALL, 'en_IN')
for num in (80000.00, 10000000):
    print(locale.format("%d", num, grouping=True))
    print('{:,.0f}'.format(num))

урожаи

80,000
80,000
1,00,00,000
10,000,000

Напротив, '{:,.0f}'.format всегда ставит запятую-разделитель между каждыми тремя цифрами.

person unutbu    schedule 05.06.2015
comment
спасибо за быстрый ответ, я немного новичок в Python, и теперь я получаю часть '{:,.0f}'.format(800000.00) спасибо за объяснение большинства частей. Что означает : в '{:,.0f}'.format(800000.00)? - person tony; 06.06.2015
comment
Двоеточие — это фиксированная часть строки формата, которая разделяет field_name и conversion из format_spec. - person unutbu; 06.06.2015
comment
Интересно, я предполагаю, что {} используется вместо (), потому что это несколько операций форматирования?: Пример: num1 = format(num1, ',.2f') num1 = 800000 num2 = '{:,.0f} '.format(800000.00) число2 = 800 000 - person tony; 06.06.2015
comment
Не совсем. Существует функция format, которая, как и все функции, вызывается помещением круглых скобок () после функции. '{:,.0f}' — это строка. Все в Python является объектом. Строка является объектом str. Объекты имеют методы. '{:,.0f}'.format — это str метод форматирования объекта. Методы, как и функции, вызываются путем помещения круглых скобок после метода. Таким образом, вы передаете аргумент num и вызываете метод с '{:,.0f}'.format(num). - person unutbu; 06.06.2015
comment
format(num1, ',.2f') – это пример вызова функции format. '{:,.0f}'.format(800000.00) – это пример вызова метода str.format. - person unutbu; 06.06.2015
comment
Ааааа, хорошо, это имеет смысл, мне было интересно, почему они разные. Спасибо, что нашли время объяснить все и различия между ними. - person tony; 06.06.2015

"{:,}".format(int(num))

отлично работает для меня.

person smearumi    schedule 29.12.2016