2013-08-06 36 views
3

我有一個句子瓶的應用程序不渲染HTML標籤正確

sentence = <p> Reading, watching or <span class="matching">listening</span> to the media isn’t <span class="matching">matching</span><span class="matching">much</span> help either. </p> 

,使其在前端這裏正確地呈現爲我做了什麼

from flask import Markup 
sentence = Markup(sentence) 

但輸出僅呈現正常對於一個標記(不一定是第一個標記)而其他標記不呈現。

  <p> Reading, watching or <span class="matching">listening</span> to the media isn’t &lt;span class=&#34;matching&#34;&gt;much&lt;/span&gt; help either. </p> 

我在這裏做錯了什麼?

+0

在Django,我們會做這樣的事情:{{變量名|安全}} – pynovice

+0

當我在終端中嘗試您的示例時,出現以下錯誤:「UnicodeDecodeError:'ascii'編解碼器無法解碼位置81中的字節0xe2:序號不在範圍內(128)」您沒有得到這樣的錯誤嗎?這裏是SO鏈接來解決它:http://stackoverflow.com/questions/1342000/how-to-replace-non-ascii-characters-in-string – rajpy

+0

謝謝@rajpy您發佈的鏈接有一個功能,它將刪除所有非ASCII字符,它使它更容易。謝謝:) –

回答

6

罪魁禍首是

isn’t

說,「'」是無效的ASCII,因爲它的它不HTML標記的字符的有效範圍裏,所以它避開了它(不過,拋出一個錯誤)

希望能解決這個問題。

這對我的作品

from flask import Markup 
sentence = '<p> Reading, watching or <span class="matching">listening</span> to the media isn\'t <span class="matching">matching</span><span class="matching">much</span> help either. </p>' 
Markup(sentence) 

回報

Markup(u'<p> Reading, watching or <span class="matching">listening</span> to the media isn\'t <span class="matching">matching</span><span class="matching">much</span> help either. </p>') 

希望是什麼是所需的輸出

+0

好的。你看到罪魁禍首,你已經手動編輯和添加轉義,使其有效的HTML標記。但是我有很多句子。你如何首先將這些句子改爲有效的HTML標記? –

+0

好吧,你可以編寫一個腳本來刪除所有超出範圍的字符..或者用一個有效的字符替換它們。:D – avk

+0

done,將該部分添加到答案中:) –