Как поместить переменную в строку?
Я хотел бы поместить 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)