Pour imprimer un nombre avec un séparateur de milliers, on peut utiliser la chaîne de format python :
'{:,}'.format(1234567890)
Mais comment puis-je spécifier que je veux un espace pour le séparateur de milliers ?
Pour imprimer un nombre avec un séparateur de milliers, on peut utiliser la chaîne de format python :
'{:,}'.format(1234567890)
Mais comment puis-je spécifier que je veux un espace pour le séparateur de milliers ?
La réponse de @user136036 est assez bonne, mais malheureusement elle ne prend pas en compte la réalité des bugs Python. La réponse complète pourrait être la suivante :
Si la locale de votre plateforme fonctionne correctement, utilisez simplement la locale :
import locale
locale.setlocale(locale.LC_ALL, '')
print("{:,d}".format(7123001))
Le résultat dépend de votre locale et de l'implémentation de Python qui fonctionne correctement.
Mais que se passe-t-il si le formatage de Python en fonction de la locale est cassé, par exemple Python 3.5 sur Linux ?
Si Python ne respecte pas grouping=True
vous pouvez utiliser la locale et une solution de contournement (utiliser le format monétaire) :
locale.setlocale(locale.LC_ALL, '')
locale._override_localeconv = {'mon_thousands_sep': '.'}
print(locale.format('%.2f', 12345.678, grouping=True, monetary=True))
Au-dessus donne 12.345,68 sur ma plateforme. Définir monetary à False ou l'omettre - Python ne regroupe pas les milliers. En spécifiant locale._override_localeconv = {'thousands_sep': '.'}
ne rien faire.
Si vous n'avez pas le temps de vérifier ce qui fonctionne correctement et ce qui est cassé avec Python sur votre plateforme, vous pouvez simplement utiliser la fonction de remplacement de chaîne de caractères (si vous voulez remplacer les virgules et les points par des points et des virgules) :
print("{:,.2f}".format(7123001.345).replace(",", "X").replace(".", ",").replace("X", "."))
Remplacer la virgule par l'espace est trivial (le point est supposé être le séparateur décimal) :
print("{:,.2f}".format(7123001.345).replace(",", " ")
Vous devrez utiliser la fonction 'n'
un format de numéro tenant compte des spécificités locales, et paramétrez votre locale à un autre qui utilise un espace comme séparateur de milliers. Oui, c'est douloureux.
'n'
- Nombre. C'est la même chose que'd'
sauf qu'il utilise les paramètres locaux actuels pour insérer le nombre approprié de caractères de séparation.
Disons que vous codez :
print(f'{name} | Yearly salary: ${salary}.')
PRINTS -> Kate | Salaire annuel : $60000.
Il faut d'abord mettre un , séparateur :
print(f'{name} | Yearly salary: ${salary:,}.')
PRINTS -> Kate | Salaire annuel : 60 000 $.
Remplacez ensuite la virgule par un espace :
print(f'{name} | Yearly salary: {salary:,} USD.'.replace(',', ' '))
PRINTS -> Kate | Salaire annuel : 60 000 USD.
NB : N'oubliez pas que les notations USD, $ ou £, couronnes, etc. doivent correspondre aux normes universelles.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.