2010-11-22 4 views
2

python에서 lxml.html을 사용할 때 단락 (예 : 개행을 유지)은 어떻게 유지합니까?cssselect와 text_content() 후 lxml.html에있는 개행을 유지하는 Python

예를 들어, 다음은 <P> </P > 태그를 제거하고 내가 원하는하지 않은, 라인 조인

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

내가 작동하지 않는 시도했습니다 내용은 다음과 같습니다

  • lxml.html.clean.clean_html :
    • 는 줄 바꿈을 보존하지 않음.
  • content.replace (""* 3 "\ n을 \ 없음") : 결합 된 텍스트에 공백이 같은 수 없기 때문에
    • 가 지속적으로 작동하지 않습니다.

답변

1

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 
+0

덕분에,이 내가하고 결국 무엇을 : 단락 = self.doc.cssselect에게 ('사업부 # 바디 P')을 paragraph_text = = ' 내용 [paragraph.text_content() 단락 단락] \ n \ n '.join (paragraph_text) – Lionel

+0

'body.xpath ("* // p")'가 작동하지 않아 body.xpath ("./ p")'로 변경했습니다. +1 함 –