2013-08-06 3 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

В Джанго мы хотели бы сделать что-то вроде этого: {{имя_переменной | сейф}} – pynovice

+0

У меня возникла следующая ошибка, когда я попробовал ваш пример в терминале: «UnicodeDecodeError:« ascii »кодек не может декодировать байт 0xe2 в позиции 81: порядковый номер не в диапазоне (128)« Разве вы не получили такую ​​ошибку? Вот ссылка SO, чтобы решить эту проблему: http://stackoverflow.com/questions/1342000/how-to-replace-non-ascii-characters-in-string – rajpy

+0

Благодаря @rajpy ссылка, которую вы опубликовали, имеет функцию, которая удаляет все символы non 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

ok. Вы видите виновника, и вы вручную отредактировали и добавили escape, чтобы сделать его действительным HTML-разметкой. Но у меня есть gazillions предложений. Как вы впервые изменили это предложение на допустимую HTML-разметку? –

+0

ну, вы можете написать сценарий, чтобы либо удалить все символы за пределами допустимого диапазона, либо заменить их действительным.: D – avk

+0

сделано, добавлено, что часть ответа тоже :) –

Смежные вопросы