Python beautifulsoup尝试移除html标签'span

0 投票
1 回答
3803 浏览
提问于 2025-04-15 20:55

我正在尝试去掉一些东西

[<span class="street-address">
            510 E Airline Way
           </span>]

我使用了这个清理函数来去掉那些在 < > 之间的内容

def clean(val):
 if type(val) is not StringType: val = str(val)
 val = re.sub(r'<.*?>', '',val) 
 val = re.sub("\s+" , " ", val)
 return val.strip()

结果是 [ 510 E Airline Way ]

我想在这个 "clean" 函数里面添加一些代码,去掉字符 '['']',我基本上只想得到 "510 E Airline Way"

有没有人知道我可以在 clean 函数里加什么呢?

谢谢大家

1 个回答

9

使用正则表达式(re):

>>> import re
>>> s='[<span class="street-address">\n            510 E Airline Way\n           </span>]'
>>> re.sub(r'\[|\]|\s*<[^>]*>\s*', '', s)
'510 E Airline Way'

使用BeautifulSoup库:

>>> from BeautifulSoup import BeautifulSoup
>>> s='[<span class="street-address">\n            510 E Airline Way\n           </span>]'
>>> b = BeautifulSoup(s)
>>> b.find('span').getText()
u'510 E Airline Way'

使用lxml库:

>>> from lxml import html
>>> s='[<span class="street-address">\n            510 E Airline Way\n           </span>]'
>>> h = html.document_fromstring(s)
>>> h.cssselect('span')[0].text.strip()
'510 E Airline Way'

撰写回答