如何将列表(或元组)用作字符串格式化值

20 投票
8 回答
61711 浏览
提问于 2025-04-16 13:40

假设有一个变量:

s=['Python', 'rocks']
x = '%s %s' % (s[0], s[1])

现在我想用一个更长的列表来替换它,而一个一个地添加列表里的值,比如 s[0], s[1], ... s[n],感觉不太对劲。

文档中的引用:

给定格式 % 值... 如果格式需要一个单一的参数,值可以是一个非元组的单一对象。[4] 否则,值必须是一个元组,里面的项目数量必须和格式字符串中指定的数量完全一致,或者是一个单一的映射对象(比如字典)。

我尝试了很多用元组和列表作为格式化工具的组合,但都没有成功,所以我想在这里问问。

我希望这样说清楚了。

[编辑] 好吧,也许我没有说得够清楚。

我有一个很大的文本变量,比如:

s = ['a', 'b', ..., 'z']

x = """some text block
          %s
          onother text block
          %s
          ... end so on...
          """ % (s[0], s[1], ... , s[26])

我想把 % (s[0], s[1], ... , s[26]) 更简洁地替换,而不想手动输入每一个值。

8 个回答

3

在yan的回答基础上,关于更新的.format()方法,如果你有一个字典(也就是一种数据结构)里某个键对应多个值,可以通过在键后面加上索引来访问不同的值。

>>> s = {'first':['python','really'], 'second':'rocks'}
>>> x = '{first[0]} --{first[1]}-- {second}'.format(**s)
>>> x
'python --really-- rocks'

注意:如果你想在不使用.format()的情况下访问某个键对应的值,那就有点不同,具体方法如下:

>>> value=s['first'][i]
3

这里是如何连接元组中的成员:

x = " ".join(YourTuple)

空格是你用来分隔元组成员的符号。

64

你不需要把所有的索引都写出来:

s = ['language', 'Python', 'rocks']
some_text = "There is a %s called %s which %s."
x = some_text % tuple(s)

当然,s中的项目数量必须和格式字符串中的插入点数量相同。

从2.6版本开始,你还可以使用新的format方法,比如:

x = '{} {}'.format(*s)

撰写回答