Concaténation de chaîne et d'entier en python


136

En python, dis que tu as

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

vous donnera une erreur alors vous écrivez

print s+str(i) 

pour ne pas obtenir d'erreur.

Je pense que c'est une manière assez maladroite de gérer la concaténation des int et des chaînes. Même Java n'a pas besoin de transtypage explicite en String pour effectuer ce type de concaténation. Existe-t-il un meilleur moyen de faire ce genre de concaténation, c'est-à-dire sans casting explicite en Python?


8
C'est parce que Python est un langage typé fort ( en.wikipedia.org/wiki/Strong_typing ) (quelque chose sur Google pour en comprendre plus :)).
mouad

3
Cela conduirait à l'ambiguïté. Quel serait le résultat "1" + 1, 2ou "11"et pourquoi?
Buddy

1
Buddy, je ne suis pas sûr de ce que vous pensez, mais ne vous contentez pas de supposer. Mon problème était de concaténer 2 types d'objets différents et j'ai trouvé la solution. Je ne sais pas combien avez-vous programmé en python mais avez-vous déjà essayé de concaténer deux chaînes uniquement pour obtenir une erreur lorsque l'une d'elles est de type None? Vous pouvez faire des vérifications explicites, mais ce n'est qu'un peu de code supplémentaire. Ce genre de chose est nécessaire lorsque vous devez enregistrer des erreurs.
specialscope

2
Juste s+str(i), et vous avez raison!

Réponses:



87

Pas de formatage de chaîne:

>> print 'Foo',0
Foo 0

2
Cela fonctionnera bien avec print mais ne peut pas être affecté à une variable sous forme de chaîne. Cela donne un objet Set.
specialscope

2
Il colle également dans un espace supplémentaire entre les deux éléments, sauf si vous utilisez la print() fonction v3 et définissez certains de ses paramètres.
Levon

34

Formatage de chaîne, en utilisant la méthode du nouveau style .format()(avec les valeurs par défaut fournies par .format () ):

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

Ou le %formatage plus ancien, mais "toujours en attente":

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

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

Celles-ci fournissent beaucoup 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 les spécifications de format, voir ceci .


14

Python est un langage intéressant dans la mesure où s'il existe généralement une (ou deux) façons «évidentes» 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 Python3 mais les parenthèses après l'impression étaient toujours autorisées (facultatif) jusqu'à ce que la version 3 les rende obligatoires.

J'espère que cela t'aides.

Caitlin


5

La méthode format () peut être utilisée pour concaténer une chaîne et un entier

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


0

en 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}')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.