Эквивалент Python для strip_tags PHP?

Эквивалент Python для strip_tags PHP?

http://php.net/manual/en/function.strip-tags.php

В стандартной библиотеке Python такой вещи нет. Это потому, что Python является языком общего назначения, а PHP – как ориентированный на веб-язык язык.

Тем не менее, у вас есть 3 решения:

  • Вы спешите: просто сделайте свое. re.sub(r'<[^>]*?>', '', value) может быть быстрым и грязным решением.
  • Используйте стороннюю библиотеку (рекомендуется, потому что больше доказательств): красивый суп – действительно хороший, и установить ничего не нужно, просто скопируйте каталог lib и импортируйте. Полная пачка с красивым супом .
  • Используйте фреймворк. Большинство веб-разработчиков Python никогда не кодируют код с нуля, они используют инфраструктуру, такую ​​как django , которая автоматически делает это для вас. Полная пачка с джанго .

Использование 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