2013-10-23 100 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