Me gustaría poner un int
en una string
. Esto es lo que estoy haciendo en este momento:
num = 40 plot.savefig('hanning40.pdf') #problem line
Tengo que ejecutar el progtwig para varios números diferentes, así que me gustaría hacer un bucle. Pero insertar la variable como esta no funciona:
plot.savefig('hanning', num, '.pdf')
¿Cómo inserto una variable en una cadena de Python?
plot.savefig('hanning(%d).pdf' % num)
El operador %
, cuando sigue una cadena, le permite insertar valores en esa cadena a través de códigos de formato (el %d
en este caso). Para más detalles, vea la documentación de Python:
https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
Oh, las muchas, muchas maneras …
Concatenación de cuerdas:
plot.savefig('hanning' + str(num) + '.pdf')
Especificador de conversión:
plot.savefig('hanning%s.pdf' % num)
Usando nombres de variables locales:
plot.savefig('hanning%(num)s.pdf' % locals()) # Neat trick
Utilizando str.format()
:
plot.savefig('hanning{0}.pdf'.format(num)) # Note: This is the new preferred way
Usando f-cuerdas:
plot.savefig(f'hanning{num}.pdf') # added in Python 3.6
Usando string.Template
:
plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))
Con la introducción de literales de cadena con formato (“f-strings” para abreviar) en Python 3.6, ahora es posible escribir esto con una syntax más breve:
>>> name = "Fred" >>> f"He said his name is {name}." 'He said his name is Fred.'
Con el ejemplo dado en la pregunta, se vería así
plot.savefig(f'hanning{num}.pdf')
No está seguro de lo que hace exactamente todo el código que publicó, pero para responder a la pregunta planteada en el título, puede usar + como la función de concat de cadena normal, así como str ().
"hello " + str(10) + " world" = "hello 10 world"
¡Espero que ayude!
En general, puedes crear cadenas usando:
stringExample = "someString " + str(someNumber) print(stringExample) plot.savefig(stringExample)
Necesitaba una versión extendida de esto: en lugar de incrustar un solo número en una cadena, necesitaba generar una serie de nombres de archivo con el formato ‘archivo1.pdf’, ‘archivo2.pdf’, etc. Así es como trabajó:
['file' + str(i) + '.pdf' for i in range(1,4)]
Si desea colocar varios valores en la cadena, puede utilizar el format
nums = [1,2,3] plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))
hanning123.pdf
en la cadena hanning123.pdf
. Esto se puede hacer con cualquier matriz.