Python 字符串格式化:一次引用多个参数

52 投票
3 回答
28620 浏览
提问于 2025-04-16 10:05

如果我有一个这样的字符串:

"{0} {1} {1}" % ("foo", "bar")

我想要的是:

"foo bar bar"

那么替换的标记应该是什么呢?(我知道我上面的例子不对;我只是想表达我的目标。)

3 个回答

8

Python 3 的语法确实是这样,除了 % 操作符现在变成了 format 方法。为了让大家更容易过渡到 Python 3,Python 2.6 及以上版本也加入了 str.format。想了解更多细节,可以查看格式字符串语法

>>> '{0} {1} {1}' % ('foo', 'bar')
'foo bar bar'

不过在旧版本的 Python 中,不能用元组来实现这个功能。你可以通过使用括号包裹的映射键来接近这个效果。使用映射键时,格式化的值必须以字典的形式传入,而不是元组。

>>> '%(0)s %(1)s %(1)s' % {'0': 'foo', '1': 'bar'}
'foo bar bar'

来自Python 手册的说明:

当右侧的参数是一个字典(或其他映射类型)时,字符串中的格式必须包含一个括号包裹的映射键,这个键直接跟在 '%' 字符后面。映射键用来从字典中选择要格式化的值。

16
"%(foo)s %(foo)s %(bar)s" % { "foo" : "foo", "bar":"bar"}

这是另一个真实但比较长的回答。只是想给你展示一下关于这个问题的另一种看法;)

74

在编程中,有时候我们需要把一个东西的状态保存下来,以便以后可以再用。这就像把你正在做的事情记录下来,等你需要的时候再去查看。

比如说,你在写代码的时候,可能会遇到一些问题。为了找到解决办法,你可以把当前的代码状态保存成一个“快照”。这样,当你需要回到之前的状态时,就可以很方便地恢复。

这个过程就像是拍照一样,你把当前的状态拍下来,等需要的时候再翻出来看。这样可以避免因为修改代码而导致的错误,让你在编程的过程中更加安心。

总之,保存状态就是为了让你在需要的时候能方便地找到之前的记录,避免不必要的麻烦。

"{0} {1} {1}".format("foo", "bar")

撰写回答