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

425 投票
9 回答
1255029 浏览
提问于 2025-04-15 23:28

我想把一个 int 类型的数字放进一个 string 字符串里。现在我正在这样做:

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

因为我需要对几个不同的数字运行这个程序,所以我想用一个循环。但是像这样插入变量并不奏效:

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

那我该怎么把变量放进 Python 的字符串里呢?


另外请参考

如果你想要 创建一个文件路径,可以查看 如何从各部分(比如文件夹路径、文件名和扩展名)创建完整的文件路径?,这里有更多技巧。通常使用专门的代码来创建路径会更好。

如果你想要 构建一个包含变量数据的 URL不要使用普通的字符串格式化,因为这样容易出错,而且比必要的要复杂。可以使用专门的工具。查看 如何在 Python 中向给定的 URL 添加参数

如果你想要 构建一个 SQL 查询不要使用普通的字符串格式化,因为这会带来 重大安全风险。这就是“SQL 注入”的原因,每年给真实公司造成巨额损失。例如,可以查看 如何在 Python 中使用变量构建 SQL 语句?,了解正确的技巧。

如果你 只是想要 print(输出)这个字符串,你可以先这样准备,或者如果你不需要这个字符串做其他事情,可以用一次 print 分别打印每一部分的输出。查看 如何一次性在同一行打印多个内容(固定文本和/或变量值)?,了解这两种方法的详细信息。

查看 如何连接 str 和 int 对象?,了解尝试用 + 来连接“字符串”时可能出现的错误,尤其是当其中一个不是字符串时。

9 个回答

213

在Python 3.6中,新增了格式化字符串字面量(简称“f-strings”),这让我们可以用更简洁的语法来写代码:

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

根据问题中给出的例子,它看起来会是这样:

plot.savefig(f'hanning{num}.pdf')
827

使用f-strings

plot.savefig(f'hanning{num}.pdf')

这个功能是在3.6版本中加入的,现在是推荐的使用方式。


使用str.format()

plot.savefig('hanning{0}.pdf'.format(num))

字符串连接:

plot.savefig('hanning' + str(num) + '.pdf')

转换说明符

plot.savefig('hanning%s.pdf' % num)

使用本地变量名(一个很不错的小技巧):

plot.savefig('hanning%(num)s.pdf' % locals())

使用string.Template

plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))

另请参见:

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

%这个符号,当它跟在一个字符串后面时,可以让你通过格式代码(在这个例子中是%d)把一些值插入到这个字符串里。想了解更多细节,可以查看Python的官方文档:

printf风格的字符串格式化

撰写回答