2013-10-23 93 views
1

符号我使用下面的Python中剥离HTML标签,但它也消除&(号),我需要他们留下来。有任何想法吗?带HTML标签 - 在Python

从HTMLParser的进口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() 


(也,代码块不配合,请想象一下在最后三个行缩进)

+1

你为什么要保留'&'而不是'<'?在连接到HTML之前,您应该** **文本。 – SLaks

+0

我固定的代码缩进你。 :) – jwarner112

回答

0

正则表达式替换听起来像一个简单的方法来做到这一点。

import re 
text = '<b>foo&bar <a href="http://www.example.com/">link</a></b>' 
re.sub(r'<.+?>', '', text) 
# foo&bar link 

可能有一些特殊情况,我没有想过哪些需要更复杂的正则表达式。

+0

''...? – Basic

+0

你说得对,我已经编辑我的答案的东西更简单。 – Wiwiweb

+0

唯一的问题我有我确信完全是因为我是一个相对NOOB是我需要设置 文本=应用re.sub(...) 而不仅仅是 应用re.sub(...) – chaugen1