我正在尝试在python中构建一个HTML表并遇到以下语法错误,有谁可以请指出这里的问题是什么?
for i in range(len(PLlis)):
print "i"
print i
outstring += "<tr>\n"
outstring += "<td><a href="wikilinklis[i]">PLlist[0]</a></td>\n"
outstring += "<td>build_locationlis[i]</td>\n"
outstring += "<td>lis[i]</td>\n"
outstring += "<td>Host_loc</td>\n"
outstring += "<td>Baselis[i]</td>\n"
outstring += "</tr>\n"
outstring += "</table>\n"
return outstring
语法错误: -
outstring += "<td><a href="wikilinklis[i]">PLlist[0]</a></td>\n"
^
SyntaxError:语法无效
答案 0 :(得分:4)
连接你的字符串:
outstring += "<td><a href=" + wikilinklis[i] + ">PLlist[0]</a></td>\n"
如果wikilinks
是字符串的python数组。否则你必须转义引号(如果你试图将'wikilinks [i]'写成一个字符串)。
答案 1 :(得分:2)
你必须像这样重建你的字符串,因为wikilinklis [i]每次迭代都会改变。
outstring += "<td><a href=%s>%s</a></td>\n" % (wikilinklis[i], PLlist[0])
答案 2 :(得分:0)
Python没有内置的字符串插值。但是,您可以使用"formatstring".format(...)
for i in range(len(PLlis)):
print "i"
print i
outstring += """
<tr>
<td><a href="{wikilink}">{PLlist[0]}</a></td>
<td>{build_location}</td>
<td>{value}</td>
<td>Host_loc</td>
<td>{base}</td>
</tr>""".format(
wikilink=wikilinklis[i],
build_location=build_locationlis[i],
value=lis[i],
base=Baselis[i]
)
outstring += "</table>\n"
return outstring
三重引号没有任何意义,只允许我跨越多行的字符串。
答案 3 :(得分:0)
不要做你正在做的事。您希望将值替换为模板,而不是连接一串字符串。
最简单的方法是使用字符串和%
运算符:
"""
<tr>
<td><a href="%(wikilinklis)s">%(PLlist)s</a></td>
<td>%(build_locationlis)s</td>
</tr>
""" % {'wikilinks': 'http://foo', 'PLlist': 'A link' }
请注意三引号,它允许您嵌入换行符和引号。