Эквивалент Python для strip_tags PHP?
http://php.net/manual/en/function.strip-tags.php
В стандартной библиотеке Python такой вещи нет. Это потому, что Python является языком общего назначения, а PHP – как ориентированный на веб-язык язык.
Тем не менее, у вас есть 3 решения:
re.sub(r'<[^>]*?>', '', value)
может быть быстрым и грязным решением. Использование BeautifulSoup
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(htmltext) ''.join([e for e in soup.recursiveChildGenerator() if isinstance(e,unicode)])
from bleach import clean print clean("<strong>My Text</strong>", tags=[], strip=True, strip_comments=True)
Вы не найдете много встроенных эквивалентов Python для встроенных PHP-функций HTML, поскольку Python является скорее языком общего назначения, чем языком веб-разработки. Для обработки HTML рекомендуется использовать BeautifulSoup .
Python не имеет одного встроенного, но есть нечестивое количество реализаций .
Я построил один для Python 3, используя класс HTMLParser. Это более подробно, чем PHP. Я назвал его классом HTMLCleaner, и вы можете найти источник здесь, и здесь вы можете найти примеры.
Для этого существует рецепт активного состояния,
http://code.activestate.com/recipes/52281/
Это старый код, поэтому вам нужно изменить sgml-парсер на HTMLparser, как указано в комментариях
Вот модифицированный код,
import HTMLParser, string class StrippingParser(HTMLParser.HTMLParser): # These are the HTML tags that we will leave intact valid_tags = ('b', 'a', 'i', 'br', 'p', 'img') from htmlentitydefs import entitydefs # replace entitydefs from sgmllib def __init__(self): HTMLParser.HTMLParser.__init__(self) self.result = "" self.endTagList = [] def handle_data(self, data): if data: self.result = self.result + data def handle_charref(self, name): self.result = "%s&#%s;" % (self.result, name) def handle_entityref(self, name): if self.entitydefs.has_key(name): x = ';' else: # this breaks unstandard entities that end with ';' x = '' self.result = "%s&%s%s" % (self.result, name, x) def handle_starttag(self, tag, attrs): """ Delete all tags except for legal ones """ if tag in self.valid_tags: self.result = self.result + '<' + tag for k, v in attrs: if string.lower(k[0:2]) != 'on' and string.lower(v[0:10]) != 'javascript': self.result = '%s %s="%s"' % (self.result, k, v) endTag = '</%s>' % tag self.endTagList.insert(0,endTag) self.result = self.result + '>' def handle_endtag(self, tag): if tag in self.valid_tags: self.result = "%s</%s>" % (self.result, tag) remTag = '</%s>' % tag self.endTagList.remove(remTag) def cleanup(self): """ Append missing closing tags """ for j in range(len(self.endTagList)): self.result = self.result + self.endTagList[j] def strip(s): """ Strip illegal HTML tags from string s """ parser = StrippingParser() parser.feed(s) parser.close() parser.cleanup() return parser.result