<tfoot id='sG2zU'></tfoot>

<i id='sG2zU'><tr id='sG2zU'><dt id='sG2zU'><q id='sG2zU'><span id='sG2zU'><b id='sG2zU'><form id='sG2zU'><ins id='sG2zU'></ins><ul id='sG2zU'></ul><sub id='sG2zU'></sub></form><legend id='sG2zU'></legend><bdo id='sG2zU'><pre id='sG2zU'><center id='sG2zU'></center></pre></bdo></b><th id='sG2zU'></th></span></q></dt></tr></i><div id='sG2zU'><tfoot id='sG2zU'></tfoot><dl id='sG2zU'><fieldset id='sG2zU'></fieldset></dl></div>

      • <bdo id='sG2zU'></bdo><ul id='sG2zU'></ul>
      <legend id='sG2zU'><style id='sG2zU'><dir id='sG2zU'><q id='sG2zU'></q></dir></style></legend>
    1. <small id='sG2zU'></small><noframes id='sG2zU'>

      在&lt;p&gt;&lt;/p&gt;中禁止Python标记换行文本;

      时间:2024-08-21

        <small id='lKFpo'></small><noframes id='lKFpo'>

          <legend id='lKFpo'><style id='lKFpo'><dir id='lKFpo'><q id='lKFpo'></q></dir></style></legend>
          <tfoot id='lKFpo'></tfoot>
            <tbody id='lKFpo'></tbody>
              <bdo id='lKFpo'></bdo><ul id='lKFpo'></ul>

            • <i id='lKFpo'><tr id='lKFpo'><dt id='lKFpo'><q id='lKFpo'><span id='lKFpo'><b id='lKFpo'><form id='lKFpo'><ins id='lKFpo'></ins><ul id='lKFpo'></ul><sub id='lKFpo'></sub></form><legend id='lKFpo'></legend><bdo id='lKFpo'><pre id='lKFpo'><center id='lKFpo'></center></pre></bdo></b><th id='lKFpo'></th></span></q></dt></tr></i><div id='lKFpo'><tfoot id='lKFpo'></tfoot><dl id='lKFpo'><fieldset id='lKFpo'></fieldset></dl></div>
              • 本文介绍了在&lt;p&gt;&lt;/p&gt;中禁止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")
                

                这篇关于在&lt;p&gt;&lt;/p&gt;中禁止Python标记换行文本;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                上一篇:“金家”中的列表理解 下一篇:JJAA2循环中DICT的排序字典

                相关文章

                  <i id='IQDF9'><tr id='IQDF9'><dt id='IQDF9'><q id='IQDF9'><span id='IQDF9'><b id='IQDF9'><form id='IQDF9'><ins id='IQDF9'></ins><ul id='IQDF9'></ul><sub id='IQDF9'></sub></form><legend id='IQDF9'></legend><bdo id='IQDF9'><pre id='IQDF9'><center id='IQDF9'></center></pre></bdo></b><th id='IQDF9'></th></span></q></dt></tr></i><div id='IQDF9'><tfoot id='IQDF9'></tfoot><dl id='IQDF9'><fieldset id='IQDF9'></fieldset></dl></div>

                  <small id='IQDF9'></small><noframes id='IQDF9'>

                  <legend id='IQDF9'><style id='IQDF9'><dir id='IQDF9'><q id='IQDF9'></q></dir></style></legend>

                1. <tfoot id='IQDF9'></tfoot>
                  • <bdo id='IQDF9'></bdo><ul id='IQDF9'></ul>