2011-01-04 8 views
1

Я пытаюсь понять, какое значение параметра n точно выполняет форматирование строки для флага type.Форматирование строк python

PEP 3101 говорит (в разделе о доступных целочисленных типов):

'n' - Number. This is the same as 'd', except that it uses the 
       current locale setting to insert the appropriate 
       number separator characters. 

Я попытался следующий код:

print "This is a large number with formatting applied: {0:n}".format(1384309238430) 

Я получаю результат:

This is a large number with formatting applied: 1384309238430 

То есть , нет символов разделителя номера. Как найти настройки моего языка? Как получить символы разделителя числа (я думаю, что с помощью символов разделителя номера это относится к таким вещам, как запятые разделителя тысяч).

ответ

10
import locale 
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
print('{0:n}'.format(1234)) 

дает

1,234 

Вы можете найти текущую локаль с locale.getlocale():

In [31]: locale.getlocale() 
Out[31]: ('en_US', 'UTF8') 

и язык по умолчанию с locale.getdefaultlocale().

В системах * nix вы можете получить список локалей, о которых ваша машина знает с помощью команды locale -a.

3

Все зависит от местности:

>>> print "{0:n}".format(134.3) 
134.3 
>>> import locale 
>>> locale.getlocale() 
(None, None) 
>>> locale.setlocale(locale.LC_ALL, 'de_DE') 
'de_DE' 
>>> print "{0:n}".format(134.3) 
134,3 
>>> print "{0:n}".format(13423.3) 
13423,3 
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
'en_US.UTF-8' 
>>> print "{0:n}".format(13423.3) 
13,423.3 
>>> 
1

Отъезд locale модуль. Метод getdefaultlocale представляет интерес, если вы хотите просто по умолчанию использовать обычные системные настройки.

1

Необходимо указать setlocale, возможно, с пустой строкой для параметра locale.

Смежные вопросы