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?
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
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()))
_
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')
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é!
En général, vous pouvez créer des chaînes en utilisant:
stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)
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)]
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.
Il vous suffit de convertir la variable nonne en chaîne à l'aide de
str(num)