使用Flask时,如果您使用the escape function,则会返回Markup string。
此标记字符串会自动将添加到其中的任何内容转换为转义字符串。
#message = "Hello <em>World</em>\r\n"
message = escape(message)
#message = u'Hello <em>World</em>!\r\n'
message = message.replace('\r\n','<br />').replace('\n','<br />')
#message = u'Hello <em>World</em>!<br />' Here <br /> is automatically escaped
#But I want message = u'Hello <em>World</em>!<br />;'
新添加的<br />
会自动转义,因为escape()
会返回标记字符串。
如何将此标记字符串转换为普通的python字符串?
答案 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
对象,你可以将其转换回来。