Комбиниране на формати на 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) num2 = 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