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

时间:2011-01-17 01:32:28

标签: python string-formatting

如果我有一个字符串:

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

我希望:

"foo bar bar"

替换令牌必须是什么? (我知道上面的例子不正确;我只是想表达我的目标。)

3 个答案:

答案 0 :(得分:50)

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

答案 1 :(得分:14)

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

是另一个真实但很长的答案。只是为了向您展示关于该问题的另一种观点;)

答案 2 :(得分:6)

Python 3具有完全相同的语法,但%运算符现在是format方法。 {2.6}已添加str.format以平滑过渡到Python 3.有关详细信息,请参阅format string syntax

>>> '{0} {1} {1}' % ('foo', 'bar')
'foo bar bar'
但是,在旧版本的Python中,无法使用元组来完成。您可以使用括在括号中的映射键来结束。使用映射键时,格式值必须作为dict而不是元组传递。

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

来自Python manual

  

当右参数是字典(或其他映射类型)时,字符串中的格式必须包含括号中的映射键,该键将紧接在'%'字符后插入的字典中。映射键从映射中选择要格式化的值。