如何将列表(或元组)用作字符串格式化值
假设有一个变量:
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)