327 votes

Comment mettre la valeur d'une variable dans une chaîne de caractères ?

Je voudrais mettre un int en un string . C'est ce que je fais en ce moment :

num = 40
plot.savefig('hanning40.pdf') #problem line

Je dois exécuter le programme pour plusieurs numéros différents, j'aimerais donc faire une boucle. Mais l'insertion de la variable comme ceci ne fonctionne pas :

plot.savefig('hanning', num, '.pdf')

Comment insérer une variable dans une chaîne Python ?

667voto

Andis Points 1

Oh, les nombreuses, nombreuses façons...

Concaténation de chaînes de caractères :

plot.savefig('hanning' + str(num) + '.pdf')

Spécification de la conversion :

plot.savefig('hanning%s.pdf' % num)

Utilisation des noms de variables locales :

plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick

Utilisation de str.format() :

plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the preferred way since 3.6

En utilisant des cordes F :

plot.savefig(f'hanning{num}.pdf') # added in Python 3.6

C'est la nouvelle voie privilégiée :


Utilisation de string.Template :

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

184voto

Amber Points 159296
plot.savefig('hanning(%d).pdf' % num)

El % permet, lorsqu'il suit une chaîne de caractères, d'insérer des valeurs dans cette chaîne au moyen de codes de format (l'opérateur %d dans ce cas). Pour plus de détails, consultez la documentation Python :

https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting

182voto

joelostblom Points 7189

Avec l'introduction de chaînes de caractères formatées ("f-strings" en abrégé) dans Python 3.6, il est maintenant possible de l'écrire avec une syntaxe plus brève :

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

Avec l'exemple donné dans la question, cela ressemblerait à ceci

plot.savefig(f'hanning{num}.pdf')

18voto

goggin13 Points 2324

Je ne sais pas exactement ce que fait tout le code que vous avez posté, mais pour répondre à la question posée dans le titre, vous pouvez utiliser + comme la fonction normale de concat des chaînes de caractères ainsi que str().

"hello " + str(10) + " world" = "hello 10 world"

J'espère que cela vous aidera !

6voto

Yehonatan Points 525

En général, vous pouvez créer des chaînes de caractères en utilisant :

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)

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