Python在lxml.html中保持cssselect和text_content()后的换行符

2 投票
1 回答
2158 浏览
提问于 2025-04-16 07:26

在Python中,如何在使用lxml.html时保留段落(也就是保持换行)?

比如,下面的代码会去掉<p></p>标签,并把行连接在一起,这正是我不想要的:

body = doc.cssselect("div.body")[0]
content = body.text_content()

这是我尝试过但没有成功的方法:

  • lxml.html.clean.clean_html:
    • 不会保留换行。
  • content.replace(" "*3,"\n\n"):
    • 不太稳定,因为合并后的文本空格数量不一致。

1 个回答

2

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

撰写回答