2

我是一名初学者程序员,我一直在尝试在我的网络应用程序中使用 python markdown 库。一切正常,除了 nl2br 扩展。

当我尝试使用 md.convert(text) 将文本文件转换为 html 时,它看不到将换行符转换为<br>.

例如,在我转换之前,文本是:

Puerto Rico

===========

------------------------------

### Game Rules





hello world!

转换后,我得到:

 <h1>Puerto Rico</h1>
<hr />
<h3>Game Rules</h3>
<p>hello world!</p>

我的理解是空格由 '\n' 表示,应该转换为<br>,但我没有得到那个结果。这是我的代码:

import markdown
md = markdown.Markdown(safe_mode='escape',extensions=['nl2br']) 
html = md.convert(text)

如果您有任何想法或可以指出正确的方向,请告诉我。谢谢你。

4

2 回答 2

1

尝试在行尾添加两个或多个空格以插入<br/>标签

例子:

hello  
world

结果是

<p>hello <br>
world</p>

请注意,单词 hello 后面有两个空格。仅当您在行尾的两个空格之前有一些文本时,这才有效。但这与您的 nl2br 扩展无关,这是降价标准。

我的建议是,如果您不需要明确地进行这种转换,那就不要这样做。使用段落别名<p>-tags 是分隔文本区域的更简洁的方法。

如果您只是想在<h3>标题之后有更多空间,请为它定义一些 CSS:

h3 { margin-bottom: 4em; }

如果您在所有 500 个 wiki 页面中的标题之后使用 -tags 进行间距,<br>然后您决定它的间距为 20px 太多。然后您必须手动编辑所有页面并删除<br>每个页面上的两个标签。否则,您只需编辑 css 文件中的一行。

于 2012-08-30T15:02:38.240 回答
0

自己发现了这个问题以寻求澄清。因此,尽管晚了 7 年,但仍添加了更新。


Python Markdown 项目的参考线程:https ://github.com/Python-Markdown/markdown/issues/707

事实证明这确实是预期的行为,因此,nl2br扩展只转换块内出现的单个换行符,而不是它周围。意思是,

This is
a block

This is a different
block

转换为

<p>This is<br/>block</p>\n<p>This is a different<br/>block</p>

但是当你有不同的、单独的块时,

Puerto Rico

===========

------------------------------

### Game Rules





hello world!

所有周围的换行符都被折叠,并且没有<br/>注入任何标签。

<h1>Puerto Rico</h1>
<hr />
<h3>Game Rules</h3>
<p>hello world!</p>
于 2019-05-12T16:58:02.243 回答