Подтвердить что ты не робот

Какой самый простой способ добавить запятую к целому числу?

Возможный дубликат:
Как печатать число с запятыми в качестве разделителей тысяч?

Например:

>> print numberFormat(1234)
>> 1,234

Или есть ли встроенная в Python функция?

4b9b3361

Ответ 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().

Ответ 2

locale.format()

Не забудьте сначала установить локаль.

Ответ 3

Отключен от webpy utils.py:

def commify(n):
    """
    Add commas to an integer `n`.

        >>> commify(1)
        '1'
        >>> commify(123)
        '123'
        >>> commify(1234)
        '1,234'
        >>> commify(1234567890)
        '1,234,567,890'
        >>> commify(123.0)
        '123.0'
        >>> commify(1234.5)
        '1,234.5'
        >>> commify(1234.56789)
        '1,234.56789'
        >>> commify('%.2f' % 1234.5)
        '1,234.50'
        >>> commify(None)
        >>>

    """
    if n is None: return None
    n = str(n)
    if '.' in n:
        dollars, cents = n.split('.')
    else:
        dollars, cents = n, None

    r = []
    for i, c in enumerate(str(dollars)[::-1]):
        if i and (not (i % 3)):
            r.insert(0, ',')
        r.insert(0, c)
    out = ''.join(r)
    if cents:
        out += '.' + cents
    return out

Существуют другие решения здесь.

Ответ 4

Используйте locale.format() для целого числа, но остерегайтесь текущей локали в вашей среде. В некоторых средах может не быть этого набора или установить что-то, что не даст вам результат с запятыми.

Вот код, который мне пришлось написать, чтобы разобраться с этой точной проблемой. Он автоматически установит локаль для вас в зависимости от вашей платформы:

try:
    locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') #use locale.format for commafication
except locale.Error:
    locale.setlocale(locale.LC_ALL, '') #set to default locale (works on windows)

score = locale.format('%d', player['score'], True)