156 votes

Concaténation de chaînes de caractères et d'entiers en Python

En Python, disons que vous avez

s = "string"
i = 0
print s + i

vous donnera une erreur, donc vous écrivez

print s + str(i)

pour ne pas avoir d'erreur.

Je pense que c'est une façon assez maladroite de gérer la concaténation d'int et de string.

Même Java n'a pas besoin d'un casting explicite vers String pour faire ce genre de concaténation. Existe-t-il une meilleure façon de réaliser ce type de concaténation, c'est-à-dire sans casting explicite en Python ?

92voto

Burhan Khalid Points 50578

Pas de formatage des chaînes de caractères :

>> print 'Foo',0
Foo 0

39voto

Levon Points 34085

Formatage des chaînes de caractères, en utilisant le nouveau style .format() (avec les valeurs par défaut .format() fournit) :

 '{}{}'.format(s, i)

Ou les plus âgés, mais qui "restent dans le coin", % -le formatage :

 '%s%d' %(s, i)

Dans les deux exemples ci-dessus, il y a pas de espace entre les deux éléments concaténés. Si un espace est nécessaire, il peut simplement être ajouté dans les chaînes de format.

Ceux-ci fournissent un lot de contrôle et de flexibilité sur la façon de concaténer les éléments, l'espace entre eux, etc. Pour plus de détails sur spécifications du format voir ceci .

21voto

CaitlinG Points 366

Python est un langage intéressant dans la mesure où, bien qu'il existe généralement une (ou deux) manière(s) "évidente(s)" d'accomplir une tâche donnée, la flexibilité existe toujours.

s = "string"
i = 0

print (s + repr(i))

L'extrait de code ci-dessus est écrit dans la syntaxe Python 3, mais les parenthèses après l'expression imprimer étaient toujours autorisés (facultatifs) jusqu'à ce que la version 3 les rende obligatoires.

9voto

Kasra Najafi Points 358

Dans Python 3.6 et plus récent, vous pouvez le formater comme ceci :

new_string = f'{s} {i}'
print(new_string)

Ou juste :

print(f'{s} {i}')

5voto

Aakash Wadhwa Points 81

La méthode format() peut être utilisée pour concaténer une chaîne de caractères et un nombre entier :

print(s + "{}".format(i))

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