我有这个数组:
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和字段的数量完全相同!
谢谢!
答案 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'