2014-01-28 111 views
2

使用Flask时,如果使用the escape function,则它将返回Markup string如何将Flask Markup字符串转换为普通字符串

此标记字符串会自动将添加到它的任何内容转换为转义字符串。

#message = "Hello <em>World</em>\r\n" 
message = escape(message) 
#message = u'Hello &lt;em&gt;World&lt;/em&gt;!\r\n' 
message = message.replace('\r\n','<br />').replace('\n','<br />') 
#message = u'Hello &lt;em&gt;World&lt;/em&gt;!&lt;br /&gt;' Here <br /> is automatically escaped 
#But I want message = u'Hello &lt;em&gt;World&lt;/em&gt;!<br />;' 

新增加的<br />被自动转义,因为escape()返回一个字符串标记。

如何将此标记字符串转换为普通的Python字符串?

+0

您是否在寻找[this filter snippet](http://flask.pocoo.org/snippets/28/)? –

回答

2

尝试更换前转换为字符串:

message = escape(message) 
message = str(message).replace('\r\n','<br />').replace('\n','<br />') 

或为Unicode,如果你有消息unicode的符号:

message = unicode(message).replace('\r\n','<br />').replace('\n','<br />') 
+0

@MartijnPieters字符串已经被转义:'message = escape(message)' – ndpu

+0

如果它是一个utf-8字符串,将会出错。我试过这个方法b4我在这里问。 –

+0

@MartijnPieters感谢您的回复。我刚刚尝试过,但unicode()方法不会像你说的那样再次使用它。你有没有尝试过或者在某些文档中阅读过它? –

0

您是否在寻找message.unescape()

编辑:再仔细阅读您的问题,我想我知道了解您的问题。

您需要将Markup对象转换回str你调用它的replace方法之前,它不会自动逃跑了,就像这样:

str(message).replace(foo, bar) 

然后,如果你确实需要还有Markup你可以将它转换回来。

相关问题