web-dev-qa-db-fra.com

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

Je voudrais mettre un int dans un string. Voici 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, alors j'aimerais faire une boucle. Mais insérer la variable comme ceci ne fonctionne pas:

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

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

207
Gish
plot.savefig('hanning(%d).pdf' % num)

Lors du suivi d'une chaîne, l'opérateur % vous permet d'insérer des valeurs dans cette chaîne via des codes de format (le %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

152
Amber

Oh, les nombreuses façons ...

Concaténation de chaînes:

_plot.savefig('hanning' + str(num) + '.pdf')
_

Spécificateur de conversion:

_plot.savefig('hanning%s.pdf' % num)
_

Utilisation de 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 new preferred way
_

Utilisation de f-strings:

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

Utilisation de string.Template :

_plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))
_
410
Dan McDougall

Avec l'introduction de littéraux de chaîne formatés ("f-strings" en abrégé) dans Python 3.6, il est maintenant possible de l'écrire avec une syntaxe plus courte:

>>> 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')
101
joelostblom

Vous ne savez 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 fonction de concaténation de chaînes normale ainsi que str ().

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

J'espère que ça t'as aidé!

13
goggin13

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

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

J'avais besoin d'une version étendue de ceci: au lieu d'incorporer un nombre unique dans une chaîne, je devais générer une série de noms de fichiers de la forme 'fichier1.pdf', 'fichier2.pdf' etc. travaillé:

['file' + str(i) + '.pdf' for i in range(1,4)]
3
Raja

Si vous voulez mettre plusieurs valeurs dans la chaîne, vous pouvez utiliser format

nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))

Cela entraînerait la chaîne hanning123.pdf. Cela peut être fait avec n'importe quel tableau.

2
Jonathan R

Il vous suffit de convertir la variable nonne en chaîne à l'aide de

str(num)
0
Ole