0

我正在尝试在 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:无效的语法

4

4 回答 4

4

连接你的字符串:

outstring += "<td><a href=" + wikilinklis[i] + ">PLlist[0]</a></td>\n"

ifwikilinks是一个 python 字符串数组。否则,您必须转义引号(如果您尝试将 'wikilinks[i]' 写为字符串)。

于 2012-11-04T19:45:54.183 回答
2

你必须像这样重建你的字符串,因为 wikilinklis[i] 每次迭代都会改变。

outstring += "<td><a href=%s>%s</a></td>\n" % (wikilinklis[i], PLlist[0])
于 2012-11-04T19:46:33.043 回答
0

不要做你正在做的事情。您不想连接一堆字符串,而是希望将值替换为模板。

最简单的方法是使用字符串和%运算符:

"""
<tr>
<td><a href="%(wikilinklis)s">%(PLlist)s</a></td>
<td>%(build_locationlis)s</td>
</tr>
""" % {'wikilinks': 'http://foo', 'PLlist': 'A link' }

请注意三引号,它允许您嵌入换行符和引号。

于 2012-11-04T21:25:09.687 回答
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

三引号除了允许我将字符串跨越多行之外没有任何意义。

于 2012-11-04T20:17:13.437 回答