Ответ 1
Никто до сих пор не упомянул новую опцию ','
, которая была добавлена в версии 2.7 на мини-язык спецификации формата - см. PEP 378: Формат Specifier для Thousands Separator в Что нового в документе Python 2.7. Он прост в использовании, потому что вам не нужно возиться с locale
(но он ограничен для интернационализации из-за этого, см. оригинальный PEP 378). Он работает с float, ints и decimals - и всеми другими функциями форматирования, предусмотренными в спецификации на мини-языке.
Использование образца:
print format(1234, ",d") # -> 1,234
print "{:,d}".format(1234) # -> 1,234
Примечание.. Хотя эта новая функция определенно удобна, на самом деле не так сложно использовать модуль locale
, как предложили некоторые другие. Преимущество состоит в том, что тогда числовой вывод может быть сделан автоматически, чтобы автоматически следовать соответствующим тысячам (и другим) соглашениям разделителя, используемым в разных странах при выводе таких вещей, как числа, даты и время. Также очень легко установить настройки по умолчанию с вашего компьютера, не изучая кучу языков и кодов стран. Все, что вам нужно сделать, это:
import locale
locale.setlocale(locale.LC_ALL, '') # empty string for platform default settings
После этого вы можете просто использовать общий код типа 'n'
для вывода чисел (как целое число, так и float). Где я, запятые используются как разделитель тысяч, поэтому после установки языка, как показано выше, это произойдет:
print format(1234, "n") # -> 1,234
print "{:n}".format(1234) # -> 1,234
Значительная часть остальной части мира использует для этой цели периоды вместо запятых, поэтому установка локали по умолчанию во многих местах (или явное указание кода для такого региона в вызове setlocale()
) вызывает следующее:
print format(1234, "n") # -> 1.234
print "{:n}".format(1234) # -> 1.234
Выход на основе спецификатора типа 'd'
или ',d'
не зависит от использования (или неприменения) setlocale()
. Однако спецификатор 'd'
влияет, если вместо этого вы используете locale.format()
или locale.format_string()
.