我知道在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循环?也许是单线?
答案 0 :(得分:6)
您正在寻找generator expression:
''.join('<a href="' + u + '">' + u + '</a><br/>' for u in adict[alist])
如果您不希望在最后一项之后使用<br/>
,请将<br/>
移动到要加入的字符串中。
另外,我假设adict[alist]
包含HTML代码。如果它包含文本,则必须使用html.escape()
包裹u
(将<
替换为<
,将"
替换为"
。否则,您将引入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)