python/genshi 换行转换为 html <p> 段落

3 投票
3 回答
886 浏览
提问于 2025-04-15 13:31

我想用genshi来输出评论的内容,但我不知道怎么把换行符转换成HTML段落。

下面是一个测试案例,展示应该是什么样子的:

输入: 'foo\n\n\n\n\nbar\nbaz'

输出: <p>foo</p><p>bar</p><p>baz</p>

我到处找这个功能,但在genshi和Python的标准库里都没找到。我现在使用的是TG 1.0。

3 个回答

1

我知道你说TG1,我的解决方案是TG2,但可以向后兼容,或者直接依赖于webhelpers。不过在我看来,其他所有的实现都有问题。

你可以看看这个转换模块,里面有nl2br和format_paragraphs。

2

在Genshi里可能有一个内置的功能可以做到这一点,不过如果没有的话,这段代码可以帮你实现:

output = ''.join([("<p>%s</p>" % l) for l in input.split('\n')])
3

举个例子,

def tohtml(manylinesstr):
    return ''.join("<p>%s</p>" % line
          for line in manylinesstr.splitlines()
          if line)

会产生:

print repr(tohtml('foo\n\n\n\n\nbar\nbaz'))

根据需要。

'<p>foo</p><p>bar</p><p>baz</p>'

撰写回答