单线可能吗?

时间:2011-06-23 12:43:48

标签: python

我知道在Python中这是可能的:

'\n'.join(alist)

假设' alist'是一个网址列表,我可以输出一个HTML字符串,它将生成一个href标签列表,像这样

'<a href="'.join(alist)

我知道上面的错误,但我想知道是否有更聪明的方法来做到这一点。我已经完成了以下工作:

for u in adict[alist]:
    fileHandle.write('<a href="' + u + '">' + u + '</a><br>')       

基本上,有没有办法以某种方式用join语句替换上面的for循环?也许是单线?

3 个答案:

答案 0 :(得分:6)

您正在寻找generator expression

''.join('<a href="' + u + '">' + u + '</a><br/>' for u in adict[alist])

如果您不希望在最后一项之后使用<br/>,请将<br/>移动到要加入的字符串中。

另外,我假设adict[alist]包含HTML代码。如果它包含文本,则必须使用html.escape()包裹u(将<替换为&lt;,将"替换为&quot;。否则,您将引入Cross-Site scripting漏洞(并呈现错误)。

答案 1 :(得分:1)

fileHandler.write('<br/>\n'.join('<a href="%(url)s">%(url)s</a>' % {'url':u} for u in adict[alist])

EDITED:修改为使用write方法并使用换行符和'
'标记

连接结果

答案 2 :(得分:1)

以下情况如何?

['<a href="{0}">{0}</a><br>'.format(u) for u in alist]

更新

fileHandler.write('<br />\n'.join('<a href="{0}">{0}</a>'.format(u) for u in alist)