gpt4 book ai didi

python - 在

中抑制 python markdown 换行文本

转载 作者:太空狗 更新时间:2023-10-29 21:07:32 25 4
gpt4 key购买 nike

我正在使用 python markdown作为 Jinja2 生成 html 的过滤器。作为其中的一部分,我从渲染输入中填写表格条目。通过 Markdown 过滤器传递输入总是将文本包装在段落标签中,因此表中的每个条目都包装在 <p></p> 中。 ,我不想要。

我已经通读了 Markdown 文档和第 3 方扩展列表,但似乎除了编写我自己的扩展之外没有办法抑制这种行为。没有其他方法可以抑制段落标签换行吗?还是我的做法有误?

更新:这是我现在正在使用的肮脏肮脏的可怕黑客:

def safe_markdown(text):
p = '<p>'
np = '</p>'
md = markdown.markdown(text)
if md.startswith(p) and md.endswith(np): #you filthy bastard
md = md[len(p):-len(np)]
return jinja2.Markup(md)

env = jinja2.Environment(...)
env.filters['markdown'] = safe_markdown

更新 2(对亚伦回答的回应):

感谢您的帮助,但这绝对是导致问题的 Markdown 。这是 jinja 模板的示例部分:

        {%- if spc.docs -%}
<td>{{ spc.docs|markdown }}</td></tr>
{%- else -%}
<td></td></tr>
{%- endif -%}

如果spc.docs就是'foo'生成的 html 将结束为 <td><p>foo</p></td></tr>除非我使用肮脏的 hack。

更新 3

这是一个不那么讨厌的 hack,虽然仍然是 hack 而不是真正的“答案”,IMO。

def safe_markdown(text):
md = markdown.markdown(text)
return jinja2.Markup(md)

def safe_markdown_td(text):
text = ''.join(['<td>', text, '</td>'])
return safe_markdown(text)

env = jinja2.Environment(...)
env.filters['markdown'] = safe_markdown
env.filters['markdowntd'] = safe_markdown_td

那么模板就变成了:

        {%- if spc.docs -%}
{{ spc.docs|markdowntd }}</tr>
{%- else -%}
<td></td></tr>
{%- endif -%}

最佳答案

任何时候你使用 markdown,你都必须在 html 的最终结构上接受一些相当严重的妥协。有许多你根本无法表达的结构。不要将其视为 html 的替代品,将其视为另一种语言来简单地编写内容。

可能发生的情况是,将表格单元格内容包裹在段落标记中会弄乱您的布局,在这种情况下,您应该使用 CSS 修复它:

td p {
margin: 0;
padding: 0;
}

关于python - 在 <p></p> 中抑制 python markdown 换行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com