【发布时间】:2019-08-14 12:53:58
【问题描述】:
我想将int 放入string。这就是我目前正在做的事情:
num = 40
plot.savefig('hanning40.pdf') #problem line
我必须为几个不同的数字运行程序,所以我想做一个循环。但是像这样插入变量是行不通的:
plot.savefig('hanning', num, '.pdf')
如何在 Python 字符串中插入变量?
【问题讨论】:
我想将int 放入string。这就是我目前正在做的事情:
num = 40
plot.savefig('hanning40.pdf') #problem line
我必须为几个不同的数字运行程序,所以我想做一个循环。但是像这样插入变量是行不通的:
plot.savefig('hanning', num, '.pdf')
如何在 Python 字符串中插入变量?
【问题讨论】:
哦,很多很多方法......
字符串连接:
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 preferred way since 3.6
使用 f 字符串:
plot.savefig(f'hanning{num}.pdf') # added in Python 3.6
这是新的首选方式:
plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))
【讨论】:
'foo %d, bar %d' % (foo, bar)。
plot.savefig('hanning{num}s.pdf'.format(**locals()))
plot.savefig(f'hanning{num}.pdf')。我用这个信息添加了一个答案。
plot.savefig('hanning(%d).pdf' % num)
% 运算符在跟随字符串时,允许您通过格式代码(在本例中为 %d)将值插入该字符串。有关更多详细信息,请参阅 Python 文档:
https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
【讨论】:
% 运算符自 Python 3.1 起已弃用。新的首选方法是使用PEP 3101 中讨论的.format() 方法,并在Dan McDougall 的回答中提到。
% 运算符未被弃用 - 它现在不是首选方式。
在 Python 3.6 中使用the introduction of formatted string literals(简称“f-strings”),现在可以用更简洁的语法编写:
>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'
根据问题中给出的示例,它看起来像这样
plot.savefig(f'hanning{num}.pdf')
不确定您发布的所有代码到底做了什么,但要回答标题中提出的问题,您可以使用 + 作为普通字符串 concat 函数以及 str()。
"hello " + str(10) + " world" = "hello 10 world"
希望有帮助!
【讨论】:
+ 构建字符串,因为它非常昂贵
一般来说,您可以使用以下方法创建字符串:
stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)
【讨论】:
如果您想将多个值放入字符串中,您可以使用format
nums = [1,2,3]
plot.savefig('hanning{0}{1}{2}.pdf'.format(*nums))
将产生字符串hanning123.pdf。这可以用任何数组来完成。
【讨论】:
我需要一个扩展版本:我需要生成一系列格式为“file1.pdf”、“file2.pdf”等的文件名,而不是在字符串中嵌入单个数字。这它是如何工作的:
['file' + str(i) + '.pdf' for i in range(1,4)]
【讨论】:
您只需使用
将 num 变量转换为字符串str(num)
【讨论】: