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

2024-10-04 03:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用此代码使列表中的所有元素都位于每行上:

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))

应该在另一行上执行此操作,但当我运行此操作时,它看起来是这样的:

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

如何使列表元素每行显示一个?你知道吗

编辑:

我正在使用www.pythonanywhere.com带烧瓶

这是我的python代码,它“连接”到html代码:

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

这是我的html代码:

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

Tags: 代码com元素列表htmlmsgspanans
3条回答
print(*ans, sep='\n')

应该对你有用

如果用html呈现,\n不会有任何效果。您可以尝试使用<br>标记。你知道吗

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

不过,如果你真的想列一个项目符号列表,你可以考虑使用<ul>。e、 g

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

考虑到anaswers和注释,看起来您正在使用一些模板系统来输出HTML。默认情况下,行为良好的模板系统将跳过HTML标记(以避免不安全的标记注入)。当然,您可以告诉模板系统不要转义这个特定的内容,但到目前为止,这并不是最好的解决方案:使用模板的全部目的是在模板中格式化您的内容,并保持Python代码没有标记。你知道吗

注意,不应该在python代码中串联列表内容,而应该使用模板本身来呈现它。您没有指定您正在使用哪个模板引擎(在您的问题中,您甚至没有提到任何模板,这将节省每个人的时间……),但在Django中,这可能看起来像(answers是您的列表):

{% for answer in answers %}
<p>
  {{ answer }}
</p>
{% endfor %}

编辑:好的,你用的是烧瓶。如果你读Flask's doc on templates,你读的第一件事是(重点是我的):

The templates are using Jinja2 syntax and have autoescaping enabled by default. This means that unless you mark a value in the code with Markup or with the |safe filter in the template, Jinja2 will ensure that special characters such as < or > are escaped with their XML equivalents.

尽管如此,我的建议仍然有效:不要用Python代码构建html,而是使用模板引擎,这就是它的用途。Jinja2语法来自Django模板,所以我上面的代码片段应该按原样工作,或者只做一些小的修改——但是您可能希望更改标记以使用项目符号列表或类似的东西。你知道吗

相关问题 更多 >