2013-10-23 4 views
1

다음을 사용하여 파이썬에서 HTML 태그를 제거하지만, & (앰퍼샌드)도 제거하고 있습니다. 어떤 아이디어? HTMLParser 수입 HTMLParser에서파이썬에서 & amp; 앰퍼샌드를 제거하지 않고 HTML 태그를 제거하십시오.

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

도움을 주셔서 감사합니다! 그 이유는 웹 페이지에서 필드를 읽고 있기 때문에 일부 필드에 머물러야한다는 것입니다 (예 : Nathan & Jones Law Firm) – chaugen1

답변

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

만 문제는 단순히 =의 re.sub (...) 보다는 의 re.sub (...) – chaugen1

관련 문제