[PYTHON] Formater les nombres au format monétaire

str.format()

Dans Python 2.7 et versions ultérieures, vous pouvez utiliser «Spécificateur de format pour séparateur 1000» pour séparer tous les 3 chiffres par une virgule. (Le nombre de chiffres à séparer et le délimiteur ne peuvent pas être modifiés) What’s New in Python 2.7 — Python 2.7ja1 documentation

>>> print "¥{:,d}".format(1000000)
¥1,000,000
>>> print "¥{:,.2f}".format(1000000)
¥1,000,000.00

Il peut également être utilisé dans Jinja2.

>>> import jinja2
>>> print jinja2.Template("{{ '\u00A5{:,d}'.format(num) }}").render(num=1000000)
¥1,000,000

Expressions régulières

>>> import re
>>> to_yen = lambda n: "¥" + re.sub("(\d{3}(?=\d))", "\\1,", str(n)[::-1])[::-1]
>>> print to_yen(1000000)
¥1,000,000

Notation d'inclusion de liste

>>> to_yen = lambda n: "¥" + ",".join([str(n)[::-1][i:i+3] for i in range(0, len(str(n)), 3)])[::-1]
>>> print to_yen(1000000)
¥1,000,000

module de paramètres régionaux

>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'ja_JP.UTF-8'
>>> print locale.currency(1000000, grouping=True)
¥1,000,000
>>> print locale.currency(1000000, grouping=True, international=True)
JPY 1,000,000

La modification des paramètres régionaux modifie les symboles et les délimiteurs.

>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> print locale.currency(1000000, grouping=True)
$1,000,000.00
>>> locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')
'de_DE.UTF-8'
>>> print locale.currency(1000000, grouping=True)
Eu1.000.000,00
>>> locale.setlocale(locale.LC_ALL, 'fr_FR.UTF-8')
'fr_FR.UTF-8'
>>> print locale.currency(1000000, grouping=True)
1 000 000,00 Eu

référence

str.format()

Expressions régulières

Notation d'inclusion de liste

module de paramètres régionaux

Recommended Posts

Formater les nombres au format monétaire
Renommez les fichiers au format AAAAMMJJ en numéros de série
Mettre en forme le journal d'accès AWS ALB au format JSON