不是即时修复选项,但为了扩展 agander 的评论, usingstr.format
至少可以保证您不会意外填写任何未命名的占位符而不会看到错误。这是因为它通过使用正确的方法调用语法将位置替换与命名替换分开:
>>> '%s %(var)s' % {'var': 'x'}
"{'var': 'x'} x"
>>> '{} {var}'.format(var='x')
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
'{} {var}'.format(var='x')
IndexError: tuple index out of range
>>> '{} {var}'.format(8, var='x')
'8 x'
我经常使用 Python 支持两种不同的替换语法有一个附带好处,尽管它有点滥用功能。由于我编写了很多代码来组装 SQL 查询以传递给数据库接口,该接口%s
用于参数化查询的占位符,因此我将所有外层查询粘贴为str.format
,这使%s
占位符完全不受干扰,而不必不断地逃避它们。
>>> '%s {var}'.format(var='x')
'%s x'
如果这%s
就是您希望在输出中传递 s的原因,那么str.format
可以大大简化您的生活。