如何将变量放入字符串中?
Posted
技术标签:
【中文标题】如何将变量放入字符串中?【英文标题】:How do I put a variable’s value inside a string? 【发布时间】:2011-02-26 23:52:25 【问题描述】:我想将int
放入string
。这就是我目前正在做的事情:
num = 40
plot.savefig('hanning40.pdf') #problem line
我必须为几个不同的数字运行程序,所以我想做一个循环。但是像这样插入变量是行不通的:
plot.savefig('hanning', num, '.pdf')
如何在 Python 字符串中插入变量?
【问题讨论】:
【参考方案1】:哦,很多很多方法......
字符串连接:
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('hanning0.pdf'.format(num)) # Note: This is the preferred way since 3.6
使用 f 字符串:
plot.savefig(f'hanningnum.pdf') # added in Python 3.6
这是新的首选方式:
PEP-502 RealPython PEP-536使用string.Template
:
plot.savefig(string.Template('hanning$num.pdf').substitute(locals()))
【讨论】:
要使用带多个参数的格式字符串运算符,可以使用元组作为操作数:'foo %d, bar %d' % (foo, bar)
。
你的巧妙技巧也适用于新的格式语法:plot.savefig('hanningnums.pdf'.format(**locals()))
随着 Python 3.6 中 f-strings 的引入,现在可以写为 plot.savefig(f'hanningnum.pdf')
。我用这个信息添加了一个答案。
在调用全局变量的函数中使用 locals () 时遇到问题;使用 % globals() 代替它工作
“应该有一个——最好只有一个——显而易见的方法。”。【参考方案2】:
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 的回答中提到。
%
运算符未被弃用 - 现在它不是首选方式。【参考方案3】:
在 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'hanningnum.pdf')
【讨论】:
看来f-strings are compatible with multiline strings。【参考方案4】:不确定您发布的所有代码究竟做了什么,但要回答标题中提出的问题,您可以使用 + 作为普通字符串 concat 函数以及 str()。
"hello " + str(10) + " world" = "hello 10 world"
希望有帮助!
【讨论】:
虽然这个答案是正确的,但应该避免使用+
构建字符串,因为它非常昂贵【参考方案5】:
一般来说,您可以使用以下方法创建字符串:
stringExample = "someString " + str(someNumber)
print(stringExample)
plot.savefig(stringExample)
【讨论】:
【参考方案6】:如果您想将多个值放入字符串中,您可以使用format
nums = [1,2,3]
plot.savefig('hanning012.pdf'.format(*nums))
将产生字符串hanning123.pdf
。这可以用任何数组来完成。
【讨论】:
【参考方案7】:我需要一个扩展版本:我需要生成一系列格式为“file1.pdf”、“file2.pdf”等的文件名,而不是在字符串中嵌入单个数字。这它是如何工作的:
['file' + str(i) + '.pdf' for i in range(1,4)]
【讨论】:
【参考方案8】:您只需使用
将 num 变量转换为字符串str(num)
【讨论】:
以上是关于如何将变量放入字符串中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?