제거하는 Python 코드 [중복]
이 질문에는 이미 답변이 있습니다.
- Python 24 쿠키 의 제거에서 HTML 제거
다음과 같은 텍스트가 있습니다.
text = """<div>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</div>"""
순수한 Python을 사용하여 외부 모듈을 가지고 싶습니다.
>>> print remove_tags(text)
Title A long text..... a link
lxml.html.fromstring (텍스트) .text_content ()를 사용하여 할 수 있다는 것을 알고 있지만 2.6+ 용 내장 또는 표준 라이브러리를 사용하여 순수 파이썬에서 동일한 작업을 수행해야합니다.
어떻게 할 수 있습니까?
정규식 사용
정규식을 사용하면 내부의 모든 것을 정리할 수 있습니다 <>
.
import re
def cleanhtml(raw_html):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', raw_html)
return cleantext
일부 HTML 텍스트는 ' &nsbm
' 와 같이 대괄호로 묶이지 않은 것들을 포함 할 수도 있습니다 . 이 경우 정규식을 다음과 같이 작성하는 것이 좋습니다.
cleanr = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});')
이 링크 에는 이에 대한 자세한 내용 이 포함 되어 있습니다.
BeautifulSoup 사용
BeautifulSoup
추가 패키지를 사용 하여 모든 원시 텍스트 를 사용 가능 합니다.
BeautifulSoup을 호출 할 때 명시 적으로 파서를 설정해야합니다. 대체 대답에서 언급 한대로 "lxml"을 권장합니다 (기본 답변 (즉, 추가 설치없이 가능) 'html.parser'보다 강력 함).
from bs4 import BeautifulSoup
cleantext = BeautifulSoup(raw_html, "lxml").text
그러나 외부 라이브러리를 사용하는 것을 방해하지 않습니다.
Python에는 여러 XML 모듈이 내장되어 있습니다. 전체 HTML이 포함 된 것입니다. 이미있는 경우 가장 간단한 것 입니다.xml.etree
def remove_tags(text):
return ''.join(xml.etree.ElementTree.fromstring(text).itertext())
이것이 완벽하지 않다는 점에 유의하십시오 <a title=">">
. 그러나 정말 복잡한 함수없이 라이브러리가 아닌 Python에서 얻을 수있는 가장 가까운 방법입니다.
import re
TAG_RE = re.compile(r'<[^>]+>')
def remove_tags(text):
return TAG_RE.sub('', text)
그러나 LVC에서 언급 한대로 파이썬 라이브러리에서 사용할 표준 수 있으므로 기존 버전 처럼 제공하도록 조정하면됩니다 .xml.etree
lxml
def remove_tags(text):
return ''.join(xml.etree.ElementTree.fromstring(text).itertext())
C와 장식 언어에는 간단한 방법이 있습니다. 스타일은 Pythonic이 고유 한 Python에서 작동합니다.
def remove_html_markup(s):
tag = False
quote = False
out = ""
for c in s:
if c == '<' and not quote:
tag = True
elif c == '>' and not quote:
tag = False
elif (c == '"' or c == "'") and tag:
quote = not quote
elif not tag:
out = out + c
return out
간단한 유한 상태 머신을 기반으로하는 아이디어는 여기에 자세히 설명되어 있습니다. http://youtu.be/2tu9LTDujbw
여기에서 작동하는 것을 볼 수 있습니다. : http://youtu.be/HPkNPcYed9M?t=35s
추신-만약 당신이 수업에 관심이있는 권한 (파이썬을 관심이있는 스마트에 대해) 링크를 제공합니다 : http://www.udacity.com/overview/Course/cs259/CourseRev/1 . 무료입니다!
global temp
temp =''
s = ' '
def remove_strings(text):
global temp
if text == '':
return temp
start = text.find('<')
end = text.find('>')
if start == -1 and end == -1 :
temp = temp + text
return temp
newstring = text[end+1:]
fresh_start = newstring.find('<')
if newstring[:fresh_start] != '':
temp += s+newstring[:fresh_start]
remove_strings(newstring[fresh_start:])
return temp
참고 URL : https://stackoverflow.com/questions/9662346/python-code-to-remove-html-tags-from-a-string
'IT' 카테고리의 다른 글
Python : 바인딩되지 않은 메서드 바인딩? (0) | 2020.08.07 |
---|---|
갤러리 또는 카메라에서 이미지를 선택하는 대화 상자 (0) | 2020.08.07 |
InvalidOperationException : 'Microsoft.AspNetCore.Http.IHttpContextAccessor'유형에 대한 서비스를 확인할 수 없습니다. (0) | 2020.08.07 |
Mac OSX에서 JDK 7을 어떻게 사용합니까? (0) | 2020.08.07 |
CSS 삼각형 사용자 정의 색상 (0) | 2020.08.07 |