À partir de Python 2.6, il existe une alternative: la méthode str.format()
. Voici quelques exemples en utilisant l'opérateur de format de chaîne existante (%
):
>>> "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+, tous Python 3 versions (jusqu'à présent) comprendre comment faire les deux. Je ai déchiré sans vergogne ce truc directement à partir de my hardcore Python intro book et les diapositives pour l'intro + intermédiaire Python courses I offer de temps en temps. :-)
Le code dans la question utilise "str()", le code dans la réponse de Konrad ne le fait pas. Voici donc un exemple simple: 'myFloat = 4.55' ' myString = '% d'% (myFloat) ' ' print myString' –
Pour les autres instances utilisant des flottants (si vous voulez afficher des décimales), vous devez utiliser '% f 'au lieu de'% d' – jocull
@jocull Vrai mais cette méthode est de toute façon déconseillée en faveur de 'str.format', et les chaînes de format fonctionnent différemment. –