Python, сохраняющий переводы строк в lxml.html после cssselect и text_content () - PullRequest
2 голосов
/ 22 ноября 2010

В python, как сохранить абзацы (то есть сохранить новые строки) при использовании lxml.html?

Например, следующий код будет удалять

теги и соединять строки, что нечто я хочу:
body = doc.cssselect("div.body")[0]
content = body.text_content()

Вот то, что я пробовал, это не работает:

  • lxml.html.clean.clean_html:
    • Won 't сохранить символы новой строки.
  • content.replace ("" * 3, "\ n \ n"):
    • Не работает согласованно, потому что объединенный текст работаетне иметь одинаковое количество пробелов.

1 Ответ

2 голосов
/ 22 ноября 2010

lxml text_content делает то, что должно делать в соответствии с документами, он удаляет теги html и оставляет текст позади.

Вы можете исправить это, добавив собственные новые строки перед выводом содержимого.

body = doc.cssselect("div.body")[0]
for para in body.xpath("*//p"):
    para.text = "\n%s\n" % para.text
content = body.text_content()
print content
...