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标记换行文本;


猜你喜欢
- 如何将一个类的函数分成多个文件? 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 沿轴计算直方图 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01