Python TypeError:在字符串%s的情况下,格式字符串的参数不足

时间:2016-09-12 03:39:56

标签: python html string typeerror

wrapper = """<html>
<head>
</head>
<body>
<table style="height: 100px;" width="500">
<tbody>
<tr>
<td rowspan="3"><a id="imgrec1" href="http://www.w3.org"><img src="%s" alt="Smiley face" width="50" height="100" /><br /><br /></a></td>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<tr>
<td rowspan="3"><a id="imgrec1" href="http://www.w3.org"><img src="%s" alt="Smiley face" width="50" height="100" /><br /><br /></a></td>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
</tbody>
</table>
</body>
</html>"""

str=""
for i in reclist[:2]: 
    str=str + "I[\"" + i + "\"]," + "T[\"" + i + "\"]," +"R[\"" + i + "\"]," +"P[\"" + i + "\"]," 
str = str[:-1]
print str
whole = wrapper % (str)

Output: I["M1"],T["M1"],R["M1"],P["M1"],I["M2"],T["M2"],R["M2"],P["M2"]
    whole = wrapper % (str)
    TypeError: not enough arguments for format string

由于wrapper恰好有8%s而str也有8个元组,但仍显示错误TypeError: not enough arguments for format string.

但是,如果我使用

,而不是str
    whole = wrapper %  
(I["M1"],T["M1"],R["M1"],P["M1"],I["M2"],T["M2"],R["M2"],P["M2"])

然后它工作正常。

我引用stackoverflow stackoverflow来解决这个问题,但它没有帮助。

1 个答案:

答案 0 :(得分:0)

我认为您收到错误,因为在格式化字符串时将字符串作为单个参数传递。 您最初可以创建一个列表:

str = []
for i in reclist[:2]:
    str += [I[i], T[i] etc.]

然后使用:

whole = wrapper % tuple(str)

以便列表中的每个项目都作为单独的参数传递。