1

所以假设我有一串文本:

"""Blah blah blah %s. And also blah blah blah %s. Oh! One more thing, blah blah blah %s!!!"""

和一个值列表:

values = ['foo', 'bar', 'baz', ...]

现在,我有几个变量(在我的情况下,类似于 7,尽管我可以将其减少到 3 或 4)并且我想将它们全部插入这里,但是,有五个条件可以导致不同的值对于变量(以及一些输入),所以我想做的是获取一个列表,然后将其弹出。通常我会这样做:

"""Blah blah blah %s. And also blah blah blah %s. Oh! One more thing, blah blah blah %s!!!""" % (VariableA, VariableB, VariableC)

是否可以以相对简单的方式使用值列表来代替?

我试图想出一种更 Pythonic 的字符串格式化方式,而不是在多个 if 条件中设置多个变量

4

2 回答 2

8

使用.format(),您可以展开列表,使其值成为函数的参数:

>>> vars = [1, 2, 3, 4]
>>> print '{} {} {} {}'.format(*vars)
1 2 3 4

正如@TryPyPy 指出的那样,使用旧式字符串格式的等效语法将是:

>>> vars = [1, 2, 3, 4]
>>> print '%s %s %s %s' % tuple(vars)
1 2 3 4
于 2012-05-30T20:53:55.443 回答
0

也不要忘记 python 模板:

d = {'foo':"F.O.O", 'bar':'BAR'}
Template('$foo and $bar').substitute(d)

给出:

'F.O.O and BAR'
于 2012-05-30T21:02:41.737 回答