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

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 事件处理程序的字符串放入变量中进行查询?

如何从一行中删除某些单词,但将其余部分放入带有批处理的字符串/变量中?

如何将 DisplayName 放入变量

如何将 JavaScript 函数的结果放入 python 变量中。 PyQt