python将markdown转换为html修复

时间:2018-02-22 14:43:13

标签: python markdown

这是我的实际代码:

<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

1 个答案:

答案 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'
    ])