128 votes

Formatage des nombres en chaînes de caractères en Python

Je dois trouver comment formater des nombres sous forme de chaînes de caractères. Mon code est ici :

return str(hours)+":"+str(minutes)+":"+str(seconds)+" "+ampm

Les heures et les minutes sont des entiers, et les secondes sont des flottants. La fonction str() convertit tous ces nombres au dixième (0,1). Ainsi, au lieu que ma chaîne affiche "5:30:59.07 pm", elle afficherait quelque chose comme "5.0:30.0:59.1 pm".

En résumé, de quelle bibliothèque / fonction ai-je besoin pour faire cela à ma place ?

155voto

Konrad Rudolph Points 231505

Le formatage en Python s'effectue via la fonction formatage des chaînes de caractères ( % ) opérateur :

"%02d:%02d:%02d" % (hours, minutes, seconds)

/Edit : Il y a aussi strftime .

101voto

wescpy Points 2127

À partir de Python 2.6, il existe une alternative : la fonction str.format() méthode. Voici quelques exemples utilisant l'opérateur de formatage de chaîne existant ( % ) :

>>> "Name: %s, age: %d" % ('John', 35) 
'Name: John, age: 35' 
>>> i = 45 
>>> 'dec: %d/oct: %#o/hex: %#X' % (i, i, i) 
'dec: 45/oct: 055/hex: 0X2D' 
>>> "MM/DD/YY = %02d/%02d/%02d" % (12, 7, 41) 
'MM/DD/YY = 12/07/41' 
>>> 'Total with tax: $%.2f' % (13.00 * 1.0825) 
'Total with tax: $14.07' 
>>> d = {'web': 'user', 'page': 42} 
>>> 'http://xxx.yyy.zzz/%(web)s/%(page)d.html' % d 
'http://xxx.yyy.zzz/user/42.html' 

Voici les extraits équivalents, mais en utilisant str.format() :

>>> "Name: {0}, age: {1}".format('John', 35) 
'Name: John, age: 35' 
>>> i = 45 
>>> 'dec: {0}/oct: {0:#o}/hex: {0:#X}'.format(i) 
'dec: 45/oct: 0o55/hex: 0X2D' 
>>> "MM/DD/YY = {0:02d}/{1:02d}/{2:02d}".format(12, 7, 41) 
'MM/DD/YY = 12/07/41' 
>>> 'Total with tax: ${0:.2f}'.format(13.00 * 1.0825) 
'Total with tax: $14.07' 
>>> d = {'web': 'user', 'page': 42} 
>>> 'http://xxx.yyy.zzz/{web}/{page}.html'.format(**d) 
'http://xxx.yyy.zzz/user/42.html'

Comme Python 2.6+, toutes les versions de Python 3 (jusqu'à présent) comprennent comment faire les deux. J'ai honteusement arraché ces informations directement de mon livre et les diapositives pour le cours Intro+Intermédiaire Cours de Python que je propose de temps en temps. :-)

5voto

swilliams Points 19415

Vous pouvez utiliser le formatage des chaînes de caractères de style C :

"%d:%d:d" % (hours, minutes, seconds)

Voir ici, notamment : http://diveintopython3.ep.io/strings.html#formatting-strings

0voto

Matthew Schinckel Points 15596

str() en python sur un nombre entier pas imprimer les éventuelles décimales.

Si vous avez un flottant dont vous voulez ignorer la partie décimale, vous pouvez utiliser str(int(floatValue)).

Le code suivant vous permettra peut-être de le démontrer :

>>> str(5)
'5'
>>> int(8.7)
8

0voto

Ruz Points 232

Si vous avez une valeur qui inclut une décimale, mais que la valeur décimale est négligeable (par exemple 100,0) et que vous essayez de l'intégrer, vous obtiendrez une erreur. Cela semble idiot, mais le fait d'appeler d'abord float résout ce problème.

str(int(float([variable])))

Prograide.com

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.

Powered by:

X