这是我的实际代码:
<p><strong>### The Facebook Campaign will be alligned to your bussiness goal (1 x goal per hourlie):</strong></p>
<p><strong>### What you get:</strong></p>
问题是,同一个用户添加更多时间降价代码,例如 ###你得到什么:,转化结果是这样的:
<p><strong>The Facebook Campaign will be alligned to your bussiness goal (1 x goal per hourlie):</strong></p>
<p><strong>What you get:</strong></p>
我怎么能防止这种情况?我希望在文本中没有rimanend markdown代码返回干净的html代码,完美的输出是:
field:"value
答案 0 :(得分:1)
**### foo**
实际上解析得很好,真的意味着:
<p><strong>### foo</strong></p>
这里不是Python或Markdown问题,只有用户不知道如何格式化Markdown ..
如果你想要清理它,你将需要解析用户的输入 - 但这不是一个Markdown问题,而是一种更通用的问题,肯定需要一些正则表达式。
<h3>Foo</h3>
执行### Foo
<p><strong>Foo</strong></p>
做**Foo**
。好的,所以你想解决这个具体案例,方法如下:
import re
string = '**### foo**'
print(re.sub('\*{2}\#+([^*]+)\*{2}', '** \\1 **', string))
输出
** foo **
所以,最后的功能:
def render_markdown(text):
if not text:
return ''
text = re.sub('\*{2}\#+([^*]+)\*{2}', '** \\1 **', text)
html = markdown.markdown(text, extensions=[
'markdown.extensions.sane_lists',
'markdown.extensions.nl2br',
])
return bleach.clean(html, tags=[
'p', 'h1', 'h2', 'br', 'h3', 'b', 'strong', 'u', 'i', 'em', 'hr', 'ul', 'ol', 'li', 'blockquote'
])