如何将变量放在字符串中?


246

我想int放入一个string。这是我目前正在做的事情:

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

我必须为几个不同的数字运行程序,所以我想做一个循环。但是像这样插入变量不起作用:

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

如何在Python字符串中插入变量?

Answers:


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

%运营商,下面的字符串时,允许你插入值到通过格式代码的字符串(%d在这种情况下)。有关更多详细信息,请参见Python文档:

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


38
请注意,自%Python 3.1起不推荐使用该运算符。新的首选方法是利用PEP 3101中.format()讨论的方法,并在Dan McDougall的答案中提到。
克里斯·穆勒

495

哦,很多很多方式...

字符串串联:

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()))

16
要将格式字符串运算符与多个参数一起使用,可以将一个元组用作操作数:'foo %d, bar %d' % (foo, bar)
Fiedl 2014年

12
您的巧妙技巧也可以使用新的格式语法:plot.savefig('hanning{num}s.pdf'.format(**locals()))
pix

13
随着Python 3.6中引入了f字符串,现在可以将其编写为plot.savefig(f'hanning{num}.pdf')。我在此信息中添加了答案。
joelostblom

在调用全局变量的函数中使用locals()时遇到问题;二手%全局(),而不是它的工作
洛比


17

不确定您发布的所有代码到底做什么,但是要回答标题中提出的问题,您可以将+用作常规字符串concat函数以及str()。

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

希望有帮助!


6
虽然这个答案是正确的建设与字符串+应该避免它极其昂贵
斯雷顿

6

通常,您可以使用以下命令创建字符串:

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

4

如果您想将多个值放入字符串中,则可以使用 format

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

将导致字符串hanning123.pdf。可以使用任何数组来完成。


3

我需要一个扩展版本:我不需要在字符串中嵌入单个数字,而是需要生成一系列格式为'file1.pdf','file2.pdf'等的文件名。这就是它的方式工作:

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

-1

您只需要使用以下命令将num变量转换为字符串

str(num)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.