Python Beautifulsoup пытается удалить HTML-теги «span» - PullRequest
0 голосов
/ 27 марта 2010

Я пытаюсь удалить

[<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 ]

Я пытаюсь добавить в «чистую» функцию, чтобы удалить символы '[' и ']', и в основном я просто хочу получить "510 E Airline Way".

У кого-нибудь есть подсказка, что я могу добавить к функции clean?

спасибо

1 Ответ

9 голосов
/ 27 марта 2010

Использование 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...