2017-06-20 61 views
0

一個我使用這個代碼,以使列表中的所有元素在每行:使所有列表元素,顯示每行

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

如何讓我的列表中的元素顯示每行一個?

編輯:

我使用www.pythonanywhere.com與瓶

這是我的Python代碼 「所連接」 到html代碼:

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

這是我的html代碼:

<span>{{ ans }}</span> 
+1

'打印('\ n'.join([STR(X)爲X在答])' –

+0

您是如何顯示'ans' – khelwood

+0

我想這一點,這也是如何我顯示它: ANS =('\ n'.join([STR(X)對於x在ANS]) 返回render_template( 「quizrezult_page.html」,ANS = ANS) 然後在HTML {{ANS}}

回答

1

鑑於anaswers和評論它看起來像你使用一些模板系統輸出HTML。行爲良好的模板系統在默認情況下會轉義HTML標記(以避免不安全的標記注入)。當然,你可以告訴你的模板系統不要逃避這個特定的內容,但這不是最好的解決方案,目前爲止:使用模板的關鍵在於在模板中格式化你的內容,並保持Python代碼免於標記。

IOW,你不應該在python代碼中連接你的列表內容,而是使用模板本身來渲染它。你沒有指定你正在使用的模板引擎(當然,你甚至沒有提到你的問題中有任何模板,這會節省每個人的時間......)但是在Django中,這可能看起來像(answers)你的清單):

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

編輯:好,所以你使用燒瓶。如果你讀Flask's doc on templates,你讀的第一件事是(重點是我的):

模板使用Jinja2的語法和已經autoescaping默認情況下啓用。這意味着除非您在代碼中使用標記或模板中的安全篩選器標記值,Jinja2將確保特殊字符(例如<或>)以其等效的XML轉義。

這就是說,我的建議仍然存在:不要在Python代碼中構建您的html,而是使用您的模板引擎,而不是這樣。Jinja2語法來自Django模板,所以我上面的代碼片段應該按原樣工作,或者只做很小的修改 - 但是您可能希望將標記更改爲使用項目符號列表或類似的東西。 ?

+0

非常感謝。這有效:) –

+0

請閱讀編輯;) –

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

應該爲你工作

+0

這給了我一個語法錯誤。順便說一下, t需要打印它我需要變量'ans'來顯示多行文字 –

1

如果你在html中渲染它,\n不會有任何影響。你可以嘗試使用<br>標籤。

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

雖然如果你真的試圖做一個項目符號列表,你可能會考慮使用<ul>。例如

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

I把它放在Python中,但它返回這個:https://i.gyazo.com/e0b64bafcd9ab87c4229f8be4edf9d39.png你真的看到

+0

@JKHarthoorn它看起來像你使用一些模板系統,默認情況下轉義HTML(這是實際上是正確的)。 –

+0

我正在使用pythonanywhere.com。但我仍然不知道該怎麼做。 –

相關問題