【问题标题】:Make all list elements show one per line使所有列表元素每行显示一个
【发布时间】:2017-06-20 08:26:28
【问题描述】:

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

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>

【问题讨论】:

  • print('\n'.join([str(x) for x in ans])
  • ans 的显示效果如何?
  • 我试过了,这也是我的显示方式: ans = ('\n'.join([str(x) for x in ans]) return render_template("quizrezult_page.html" , ans=ans) 然后在 html {{ ans }}
  • 但是,这给了我在 render_template 行的语法错误
  • 如果你在 html 中渲染它,你需要使用类似&lt;br&gt; 标签而不是\n

标签: python list


【解决方案1】:

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

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

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

编辑:好的,所以你正在使用 Flask。如果您阅读Flask's doc on templates,您首先阅读的是(重点是我的):

模板使用 Jinja2 语法并且默认启用自动转义。这意味着除非您在代码中使用标记或模板中的 |safe 过滤器标记值,否则 Jinja2 将确保特殊字符(如 )使用它们的 XML 等效项进行转义。。。 p>

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

【讨论】:

    【解决方案2】:
    print(*ans, sep='\n')
    

    应该适合你

    【讨论】:

    • 这给了我一个语法错误。顺便说一句,我不需要打印它。我需要变量“ans”来显示多行文本。
    【解决方案3】:

    如果你用 html 渲染它,\n 不会有任何效果。您可以尝试使用&lt;br&gt; 标签。

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

    虽然如果你真的想制作一个项目符号列表,你可以考虑使用&lt;ul&gt;。例如

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

    【讨论】:

    • 我把它放在 python 中,但它返回了这个:i.gyazo.com/e0b64bafcd9ab87c4229f8be4edf9d39.png 你真的看到了
    • @J.K.Harthoorn 看起来您正在使用一些模板系统,默认情况下会转义 html(实际上这是正确的做法)。
    • 我正在使用 pythonanywhere.com。但我还是不知道该怎么办。
    • @J.K.Harthoorn 这对您提出的问题很有帮助。
    • 对不起,我改一下。
    猜你喜欢
    • 2012-06-02
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    相关资源
    最近更新 更多