2012-06-15 4 views
2

Я хочу, чтобы удалить все HTML-теги, кроме как от моей строки с питоном я использую это:Джанго удалить теги из строки питона

from HTMLParser import HTMLParser 

class MLStripper(HTMLParser): 
    def __init__(self): 
     self.reset() 
     self.fed = [] 
    def handle_data(self, d): 
     self.fed.append(d) 
    def get_data(self): 
     return ''.join(self.fed) 

def strip_tags(html): 
    s = MLStripper() 
    s.feed(html) 
    return s.get_data() 

Но это удалить все мои HTML-теги.

+2

Как освежающе, я пришел в ожидании RegEx. Приятно удивляться. –

+0

[lxml.html] (http://lxml.de/) может сделать это за вас. – dav1d

ответ

2

Если я правильно понимаю, вы хотите снять html-теги, но чтобы сохранить некоторые конкретные? Если это так, просто следите за тегами начала и конца и обрабатывайте их, если это необходимо. Пример:

MY_TAGS = ["tag1", "tag2"] 

MLStripper(HTMLParser): 
    def __init__(self): 
     self.reset() 
     self.fed = [] 
    def handle_data(self, d): 
     self.fed.append(d) 
    def get_data(self): 
     return ''.join(self.fed) 

    def handle_starttag(self, tag, attrs): 
     if tag in MY_TAGS: 
      self.fed.append("<%s>" % tag) # tag is only string, no <or>. 
    def handle_endtag(self, tag): 
     if tag in MY_TAGS: 
      self.fed.append("</%s>" % tag)