53 votes

Comment concaténer une chaîne et un nombre en Python ?

J'essayais de concaténer une chaîne et un nombre en Python. Une erreur s'est produite lorsque j'ai essayé ceci :

"abc" + 9

L'erreur est :

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    "abc" + 9
TypeError: cannot concatenate 'str' and 'int' objects

Pourquoi je ne suis pas capable de le faire ?

Comment peut Je concatène une chaîne et un nombre en Python ?

94voto

Jochen Ritzel Points 42916

Python est fortement typé . Il n'y a pas de conversions de type implicites.

Tu dois faire l'une de ces choses :

"asd%d" % 9
"asd" + str(9)

29voto

vstrien Points 1042

Si cela a fonctionné comme vous l'aviez prévu (ce qui a donné lieu à "abc9" ), ce qui "9" + 9 livrer ? 18 o "99" ?

Pour lever cette ambiguïté, vous êtes tenu de rendre explicite ce que vous voulez convertir dans ce cas :

"abc" + str(9)

13voto

Johnsyweb Points 45395

Desde Python est un langage fortement typé la concaténation d'une chaîne de caractères et d'un nombre entier comme vous pouvez le faire en Perl n'a aucun sens, parce qu'il n'existe aucun moyen défini d'"ajouter" des chaînes de caractères et des chiffres les uns aux autres.

L'explicite est préférable à l'implicite.

...dit "Le Zen du Python" Vous devez donc concaténer deux objets de type chaîne. Vous pouvez le faire en créant une chaîne de caractères à partir d'un entier à l'aide de la fonction intégrée str() fonction :

>>> "abc" + str(9)
'abc9'

Vous pouvez également utiliser Les opérations de formatage des chaînes de caractères de Python :

>>> 'abc%d' % 9
'abc9'

Peut-être encore mieux, utilisez str.format() :

>>> 'abc{0}'.format(9)
'abc9'

Le Zen dit aussi :

Il devrait y avoir une - et de préférence une seule - manière évidente de le faire.

C'est pourquoi j'ai donné trois options. Il continue en disant...

Bien que cette voie ne soit pas forcément évidente au premier abord, à moins d'être néerlandais.

8voto

xubuntix Points 1338

Soit quelque chose comme ça :

"abc" + str(9)

o

"abs{0}".format(9)

o

"abs%d" % (9,)

2voto

senderle Points 41607

Vous devez convertir l'int en une chaîne de caractères :

"abc" + str(9)

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