Как поместить переменную в строку?

Я хотел бы поместить int в string. Вот чем я сейчас занимаюсь:

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

Я должен запустить программу для нескольких разных номеров, поэтому я хотел бы сделать цикл. Но вставка такой переменной не работает:

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

Как вставить переменную в строку Python?

Ответ 1

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

Оператор %, следуя строке, позволяет вставлять значения в эту строку через коды формата (в этом случае %d). Для получения дополнительной информации см. Документацию Python:

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

Ответ 2

Ох, много, много способов...

Конкатенация строк:

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

Спецификатор конверсии:

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

Использование имен локальных переменных:

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

Используя str.format():

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

Использование f-строк:

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

Использование string.Template:

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

Ответ 3

С введение форматированных строковых литералов (короткое слово "f-strings" ) в Python 3.6, теперь можно записать это с помощью более короткий синтаксис:

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

С примером, приведенным в вопросе, это будет выглядеть как

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

Ответ 4

Не уверен, что именно весь код, который вы опубликовали, но чтобы ответить на вопрос, заданный в заголовке, вы можете использовать + как обычную функцию строки concat, а также str().

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

Надеюсь, что это поможет!

Ответ 5

В общем, вы можете создавать строки, используя:

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

Ответ 6

Мне понадобилась расширенная версия этого: вместо того, чтобы вставлять одно число в строку, мне нужно было создать серию имен файлов формы 'file1.pdf', 'file2.pdf' и т.д. Это как это работает:

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

Ответ 7

Если вы хотите поместить несколько значений в строку, вы можете использовать format

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

Результатом будет строка hanning123.pdf. Это можно сделать с любым массивом.

Ответ 8

Вы просто должны преобразовать num переменную в строку, используя

str(num)