如何将Flask Markup字符串转换为普通字符串

时间:2014-01-28 12:30:47

标签: python flask markup

使用Flask时,如果您使用the escape function,则会返回Markup string

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

#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字符串?

2 个答案:

答案 0 :(得分: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 />')

答案 1 :(得分:0)

您在寻找message.unescape()吗?

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

您需要将Markup对象转换回str,然后才能调用replace方法使其不再自动转义,如下所示:

str(message).replace(foo, bar)

然后,如果你还需要一个Markup对象,你可以将其转换回来。