【发布时间】:2016-10-18 04:01:05
【问题描述】:
我想在 python 3 中清理一些 html,在其中我使用了一些 span 标签来用颜色标记插入的文本并删除已删除的文本。一个例子:
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua. <span class="inserted">
Lorem ipsum</span> Lorem ipsum dolor sit amet, consetetur
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut
labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum.
<span class="strikethrough">Lorem ipsum</span> lorem
<span class="inserted">ipsum</span>. At vero eos et accusam et
justo duo dolores et ea rebum. Stet clita kasd gubergren,
no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
我想做的是删除跨度标签,将跨度标签之间的文本保留为“插入”类,并删除跨度标签“删除线”之间的文本。
我发现这是为了去除标签之间的文本:
from html.parser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.strict = False
self.convert_charrefs= True
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()
但如果标签具有特殊类(“删除线”),我想删除跨度标签之间的文本。
我该怎么做?
【问题讨论】:
-
对于正则表达式来说似乎很简单。你试过吗?
标签: python python-3.x text-processing