Suppress python markdown wrapping text in lt;pgt;lt;/pgt;(在lt;pgt;lt;/pgt;中禁止Python标记换行文本;)
本文介绍了在<;p>;<;/p>;中禁止Python标记换行文本;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用pythonmarkdown作为JJAA2生成HTML的过滤。作为其中的一部分,我填充了来自呈现输入的表项。通过降价过滤传递输入总是将文本放在段落标记中,因此表中的每个条目都放在<p></p>
中,这是我不想要的。
我已经通读了标记文档和第三方扩展列表,但是似乎除了编写我自己的扩展之外,没有其他方法可以抑制这种行为。没有其他方法可以抑制段落标签换行吗?还是我做错了?
更新:这是我目前使用的肮脏、肮脏、可怕的黑客:
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(回应Aaron的回答):
感谢您的帮助,但肯定是降价导致了问题。以下是JJJA模板的示例部分:
{%- if spc.docs -%}
<td>{{ spc.docs|markdown }}</td></tr>
{%- else -%}
<td></td></tr>
{%- endif -%}
如果spc.docs
只是'foo'
,则除非我使用肮脏的黑客攻击,否则生成的html将以<td><p>foo</p></td></tr>
结束。
更新3
这里有一个不那么令人讨厌的黑客攻击,尽管仍然是一个黑客攻击,并不是真正的"答案",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.markdown()
的不需要的免费开始/结束段落标记。
markdown()
换行为段落的字符串,以下方法很适合我。我没有直接调用markdown()
,而是将调用包装在一个正则表达式中,该正则表达式去掉了有问题的段落标记,并且不会干扰我的标记中嵌入的任何intended hard-wraps。
from markdown import markdown
# ... other stuff ...
def no_p_markdown(non_p_string) -> str:
''' Strip enclosing paragraph marks, <p> ... </p>,
which markdown() forces, and which interfere with some jinja2 layout
'''
return re.sub("(^<P>|</P>$)", "", markdown(non_p_string), flags=re.IGNORECASE)
# ... other stuff ...
non_p_html = no_p_markdown("my markdown text not intended for a paragraph")
这篇关于在<;p>;<;/p>;中禁止Python标记换行文本;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在<;p>;<;/p>;中禁止Python标记换行文本;


基础教程推荐
猜你喜欢
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 包装空间模型 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01