Python格式字符串

时间:2014-02-28 12:06:26

标签: python

我有这个数组:

rows = ['1393586700', 'BLAHBLAH', 'BLEHBLEH', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0']

和这种格式字符串:

format String:   """%s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s"""

然后失败了:

print 'test: ', formatStr % rows

    print 'test: ', formatStr % rows

TypeError: not enough arguments for format string

为什么失败? %s和字段的数量完全相同!

谢谢!

3 个答案:

答案 0 :(得分:3)

这是因为您正在打印列表而不是预期的元组。

观察这个,

>>> print """%s %s""" % [1, 2]
TypeError: not enough arguments for format string

VS。,

>>> print """%s %s""" % (1, 2)
1 2

将列表转换为元组可以使用tuple()函数完成:

>>> print """%s %s""" % tuple([1, 2])
1 2

答案 1 :(得分:1)

您应该传递元组而不是列表

>>> rows = ['1393586700', 'BLAHBLAH', 'BLEHBLEH', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '0', '0']
>>> f = """%s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s ,  %s"""
>>>
>>> f % tuple(rows) 

'1393586700 ,  BLAHBLAH ,  BLEHBLEH ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  1 ,  1 ,  0 ,  0'
    >>>

答案 2 :(得分:0)

使用str.join

>>> rows = ['1393586700', 'BLAHBLAH', 'BLEHBLEH', '0', '0', '0', '0', '0', '0',
'0', '0', '0', '0', '1', '1', '0', '0']
>>> 
>>> ", ".join(rows)
'1393586700, BLAHBLAH, BLEHBLEH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0'