使用Python字符串格式化与列表

146 投票
8 回答
356732 浏览
提问于 2025-04-17 03:11

我在使用Python 2.6.5构建一个字符串s,这个字符串里面会有不同数量的%s占位符,这些占位符的数量和列表x里的条目数量是一样的。我需要把这个字符串格式化输出。下面的代码虽然不能正常工作,但它表达了我想要做的事情。在这个例子中,有三个%s占位符,而列表里也有三个条目。

s = '%s BLAH %s FOO %s BAR'
x = ['1', '2', '3']
print s % (x)

我希望输出的字符串是:

1 BLAH 2 FOO 3 BAR

8 个回答

45

根据这个资源页面,如果列表x的长度不固定,我们可以使用:

', '.join(['%.2f']*len(x))

来为列表x中的每个元素创建一个占位符。下面是一个例子:

x = [1/3.0, 1/6.0, 0.678]
s = ("elements in the list are ["+', '.join(['%.2f']*len(x))+"]") % tuple(x)
print s
>>> elements in the list are [0.33, 0.17, 0.68]
193

你可以看看Python的format方法。这样你就可以像下面这样定义你的格式字符串:

>>> s = '{0} BLAH BLAH {1} BLAH {2} BLAH BLIH BLEH'
>>> x = ['1', '2', '3']
>>> print s.format(*x)
'1 BLAH BLAH 2 BLAH 3 BLAH BLIH BLEH'
129
print s % tuple(x)
print s % (x)

而不是

撰写回答