Python 字符串格式化:一次引用多个参数
如果我有一个这样的字符串:
"{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")