使所有列表元素每行显示一个

时间:2017-06-20 08:26:29

标签: python list

我正在使用此代码在每行上创建列表的所有元素:

ans = [multiplayer_msg, rockstar_msg, reddead_msg, crashbandicoot_msg, splitscreen_msg, codemasters_msg, wildewesten_msg, sports_msg, voor18_msg, september_msg] 
#strings

ans = ("\n""\n" "- ".join(ans))

\ n应该在另一行上执行,但是当我运行它时,它看起来像这样:

https://i.gyazo.com/231ce7d25951af57f380019e3db9ded2.png

如何使列表元素每行显示一个?

编辑:

我正在使用带有Flask的www.pythonanywhere.com

这是我的python代码"连接"到HTML代码:

return render_template("quizrezult_page.html", ans=ans)

这是我的HTML代码:

<span>{{ ans }}</span>

3 个答案:

答案 0 :(得分:1)

print(*ans, sep='\n')

应该适合你

答案 1 :(得分:1)

如果你用html渲染它,\n将不会有任何效果。您可以尝试使用<br>标记。

ans = '<br>'.join(ans)

虽然如果您实际上是在尝试制作项目符号列表,但可以考虑使用<ul>。 e.g。

ans = '<ul><li>' + '</li><li>'.join(ans) + '</li></ul>'

答案 2 :(得分:1)

鉴于anaswers和评论,您似乎正在使用一些模板系统来输出HTML。默认情况下,性能良好的模板系统将转义HTML标记(以避免不安全的标记注入)。你当然可以告诉你的模板系统不要逃避这个特定的内容,但这不是最好的解决方案,目前为止:使用模板的重点是在模板中格式化你的内容并保持Python代码没有标记。

IOW,你不应该在python代码中连接你的列表内容,而是使用模板本身来呈现它。你没有指定你正在使用的模板引擎(好吧,你甚至没有在你的问题中提到任何模板,这会节省每个人的时间......)但是在Django中,这可能看起来像(answers是你的列表):

{% for answer in answers %}
<p>
  {{ answer }}
</p>
{% endfor %}
编辑:好的,所以你正在使用Flask。如果您阅读Flask's doc on templates,您首先要读的是(重点是我的):

  

模板使用Jinja2语法,默认启用自动加载。这意味着除非您在代码中使用标记或模板中的安全过滤器标记值,否则Jinja2将确保特殊字符,例如&lt;或者&gt;使用XML等价物进行转义

话虽如此,我的建议仍然是:不要在Python代码中构建你的html,而是使用你的模板引擎,这就是它的用途。 Jinja2语法来自Django模板,因此我的上述代码段应该按原样运行或只需稍作修改 - 但您可能希望更改标记以使用项目符号列表或类似内容。