2010-11-22 16 views
2

Python'da, lxml.html kullanırken paragrafları nasıl koruyabilirim (yani yeni satırları saklayabilirim)?Python lxml.html dosyasında cssselect ve text_content sonra yeni satırları tutuyor()

Örneğin, aşağıdaki <p> </p > etiketleri şerit olacak ve istediğim ne değildir, hangi satırları katılmak:

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

Ben çalışmadığını çalıştığım buydu:

  • lxml.html.clean.clean_html:
    • yeni satır korumak olmaz.
  • content.replace (" "* 3" \ n \ n"): kombine metin alanlarının aynı numarası yok çünkü
    • , sürekli çalışmaz.

cevap

1

Lxml TEXT_CONTENT docs göre, html etiketleri sıyırma ve geride metni bırakıyor gerekiyordu şeyi yapıyor.

İçeriği çıktı almadan önce kendi satırlarınızı ekleyerek bunu düzeltebilirsiniz.

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

Teşekkür, Bu, yaptığım sona erdi budur: paragraflar = self.doc.cssselect ('div # gövde p') paragraph_text = = ' içerik [paragraph.text_content() paragraflarda paragraf için] \ n \ n'.join (paragraph_text) – Lionel

+0

'body.xpath (" * // p ")' benim için çalışmıyor, ben body.xpath ("./ p") 'olarak değiştirdim. Yine de +1 –

İlgili konular