Как поместить переменную в строку? - PullRequest
200 голосов
/ 02 июня 2010

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

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

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

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

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

Ответы [ 8 ]

393 голосов
/ 03 июня 2010

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

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

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()))
151 голосов
/ 02 июня 2010
plot.savefig('hanning(%d).pdf' % num)

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

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

96 голосов
/ 26 мая 2017

С введением форматированных строковых литералов (сокращенно "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')
13 голосов
/ 02 июня 2010

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

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

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

5 голосов
/ 02 июня 2010

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

stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)
3 голосов
/ 17 сентября 2016

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

['file' + str(i) + '.pdf' for i in range(1,4)]
2 голосов
/ 09 января 2019

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

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

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

0 голосов
/ 03 июля 2019

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

str(num)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...