Новая строка на Python / Genshi в абзацы HTML <p> - PullRequest
3 голосов
/ 11 августа 2009

Я пытаюсь вывести содержимое комментария с помощью genshi, но не могу понять, как преобразовать переводы строки в абзацы HTML.

Вот тестовый пример того, как он должен выглядеть:

ввод: 'foo\n\n\n\n\nbar\nbaz'

вывод: <p>foo</p><p>bar</p><p>baz</p>

Я везде искал эту функцию. Я не мог найти его в genshi или в std lib Python. Я использую TG 1.0.

Ответы [ 3 ]

3 голосов
/ 11 августа 2009
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>'

по мере необходимости.

2 голосов
/ 11 августа 2009

Может быть встроенная функция в Genshi, но если нет, это сделает это за вас:

output = ''.join([("<p>%s</p>" % l) for l in input.split('\n')])
1 голос
/ 07 сентября 2009

Я знаю, что вы сказали, что TG1, мое решение - TG2, но его можно переносить или просто зависеть от веб-помощников, но в IMO все другие реализации несовершенны.

Взгляните на модуль преобразователей и nl2br, и format_paragraphs.

...