我觉得这对先进的pythoners很容易,但我找不到它(主要是因为我不知道如何命名问题:
fruits = ['banana','apple','lemon']
print("> %s,%s,%s,%s <" % ('peach',[x for x in fruits]))
这当然不起作用,因为左侧部分已填满:
> 'peach',['banana','apple','lemon'],???,??? <
所以这个错误导致:
TypeError:没有足够的格式字符串参数(只有两个四分之二%s&#39;被填充
这就是我想要的:
> 'peach','banana','apple','lemon' <
如何正确地做到这一点?
%('peach',[x for x in fruit])
之后的部分名称是什么?
"%s,%s,%s,%s"
之前的部分名称是什么? &#34;格式化字符串&#34;?更新
[x for fruits in]就是一个简单的例子 - 真实的更复杂:
fruits = ['banana','apple','lemon']
for i in fruits:
count[i] = 'one'
print("> %s,%s,%s,%s <" % ('two',[count[x] for x in fruits]))
答案 0 :(得分:2)
你应该连接两个元组:
print("> %s,%s,%s,%s <" % (('peach',) + tuple(x for x in fruits)))
%s
被称为conversion specifier
%
之后的内容称为mapping key
引号内的是format string
。
(条款取自docs)
从Python2.6开始,不推荐使用%
进行格式化。我相信。相反,请使用.format()
:
print("> {},{},{},{} <".format('peach', *[x for x in fruits]))
我无法相信我错过了它,但正如评论中所提到的,您不需要使用列表理解。您可以使用fruits
:
print("> %s,%s,%s,%s <" % (('peach',) + tuple(fruits)))
和
print("> {},{},{},{} <".format('peach', *fruits))
答案 1 :(得分:2)
这里有几个方法可以做到。您基本上想要为%
运算符创建一个元组:
>>> fruits = ['banana', 'apple', 'lemon']
>>> print("> %s,%s,%s,%s <" % tuple(['peach'] + fruits))
> peach,banana,apple,lemon <
>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(fruits)))
> peach,banana,apple,lemon <
>>>
编辑:如果你想做一些需要理解的爱好者,那不是问题:
>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(x for x in fruits)))
> peach,banana,apple,lemon <
>>> print("> %s,%s,%s,%s <" % (('peach',) + tuple(x.upper() for x in fruits)))
> peach,BANANA,APPLE,LEMON <
编辑:如果您想使用新的样式格式,您可以执行以下操作:
>>> print("> {},{},{},{} <".format('peach', *[x.upper() for x in fruits]))
> peach,BANANA,APPLE,LEMON <