我有一个从XML文件中抓取的强类型数据,其中包含一些HTML格式标签
(<b>, <i>, etc)
有没有快速简便的方法从文本中删除所有这些标签?
我尝试过
str = str.replace("<b>","")
我已经尝试将此方法应用到其他标签上多次,但并没有起作用。
使用lxml.html:
lxml.html.fromstring(s).text_content()
AttributeError: 'module' object has no attribute 'html'
- Alex B以下是如何使用BeautifulSoup
模块仅替换一些标签,而保留其余HTML的方法:
from BeautifulSoup import BeautifulSoup, NavigableString
def strip_tags(html, invalid_tags):
soup = BeautifulSoup(html)
for tag in soup.findAll(True):
if tag.name in invalid_tags:
s = ""
for c in tag.contents:
if type(c) != NavigableString:
c = strip_tags(unicode(c), invalid_tags)
s += unicode(c)
tag.replaceWith(s)
return soup
html = "<p>Good, <b>bad</b>, and <i>ug<b>l</b><u>y</u></i></p>"
invalid_tags = ['b', 'i', 'u']
print strip_tags(html, invalid_tags)
结果:
<p>Good, bad, and ugly</p>
答案取决于您的确切需求。您可以查看正则表达式。但是,如果您想清理糟糕的XML或HTML,则建议使用http://www.crummy.com/software/BeautifulSoup/。
str
作为变量名。 - Mark Byers