web-dev-qa-db-ja.com

整数にカンマを追加する最も簡単な方法は何ですか?

可能性のある複製:
桁ごとの区切りとしてカンマを使用して数値を出力する方法

例えば:

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

または、Pythonこれを行う組み込み関数がありますか?

35
ensnare

locale.format()

最初にロケールを適切に設定することを忘れないでください。

webpyutils.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

他の解決策があります こちら

10
systempuntoout

整数で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)
4
Aphex