如何在字符串中插入变量的值?
我想把一个 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 个回答
在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')
使用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())
plot.savefig(string.Template('hanning${num}.pdf').substitute(locals()))
另请参见:
plot.savefig('hanning(%d).pdf' % num)
%
这个符号,当它跟在一个字符串后面时,可以让你通过格式代码(在这个例子中是%d
)把一些值插入到这个字符串里。想了解更多细节,可以查看Python的官方文档: