Heim Backend-Entwicklung Python-Tutorial Einführung in die Verwendung regulärer Ausdrücke in Python zum Filtern oder Ersetzen von HTML-Tags

Einführung in die Verwendung regulärer Ausdrücke in Python zum Filtern oder Ersetzen von HTML-Tags

Sep 26, 2017 am 10:36 AM
python 表达式 过滤

In diesem Artikel wird hauptsächlich Pythons Methode zur Verwendung regulärer Ausdrücke zum Filtern oder Ersetzen von HTML-Tags vorgestellt. Er stellt kurz die Syntax von Pythons regulären Ausdrücken vor und analysiert anhand spezifischer Beispiele die auf regulären Ausdrücken basierenden HTML-Tags Bei Bedarf können Sie sich auf

beziehen. Dieser Artikel beschreibt, wie Python reguläre Ausdrücke verwendet, um HTML-Tags zu filtern oder zu ersetzen. Teilen Sie es wie folgt als Referenz mit allen:

Hauptinhalt des regulären Python-Ausdrucks:

Python regulärer Ausdruck Ausdruck Formel-Escape-Zeichen:

Entspricht jedem Zeichen außer Zeilenumbrüchen.
w entspricht Buchstaben oder Zahlen oder Unterstrichen oder chinesischen Zeichen.
s entspricht jedem Leerzeichen.
d entspricht Zahlen
b entspricht dem Anfang oder Ende eines Wortes
^ entspricht dem Anfang einer Zeichenfolge
$ entspricht dem Ende einer Zeichenfolge
W entspricht jedem Zeichen, bei dem es sich nicht um Buchstaben, Zahlen, Unterstriche oder handelt Chinesische Zeichen
S entspricht jedem Zeichen, das kein Leerzeichen ist
D entspricht jedem Nicht-Ziffer-Zeichen
B entspricht einer Position, die nicht der Anfang oder das Ende eines Wortes ist
[^x] entspricht jedes Zeichen außer x
[^aeiou ] Entspricht allen Zeichen außer den Buchstaben aeiou

Häufig verwendete Python-Qualifikationscodes/Grammatikanweisungen für reguläre Ausdrücke:

* Null oder mehrmals wiederholen
+ Ein- oder mehrmals wiederholen
? Null oder einmal wiederholen
{n} N-mal wiederholen
{n,} n-mal oder mehrmals wiederholen
{n,m} n- bis m-mal wiederholt
Über die benannte Gruppe mit regulären Python-Ausdrücken:
Benannte Gruppe: (?P<name>....)
In diesem Artikel wurde auch erwähnt, wann es um die Definition geht (Am Anfang des Fragezeichens befindet sich ein „<“-Zeichen, wenn es vorwärts ist, und ein „!“-Zeichen, wenn dies nicht der Fall ist):
Vorwärtstrennung (?<=...)
Rückwärtsabgrenzung (?=...)
Vorwärts unbegrenzt (?<!....)
Rückwärts unbegrenzt (?!....)

Regulärer Python-Ausdruck Beispielcode zum Entfernen (Filtern) von HTML-Tags


#-*- coding:utf-8 -*-
import re
##过滤HTML中的标签
# 将HTML中标签等信息去掉
# @param htmlstr HTML字符串.
def filter_tags(htmlstr):
  # 先过滤CDATA
  re_cdata = re.compile(&quot;//&lt;!
CDATA\[[&gt;]∗//
\]&gt;&quot;, re.I) #匹配CDATA
  re_script = re.compile(&#39;&lt;\s*script[^&gt;]*&gt;[^&lt;]*&lt;\s*/\s*script\s*&gt;&#39;, re.I) # Script
  re_style = re.compile(&#39;&lt;\s*style[^&gt;]*&gt;[^&lt;]*&lt;\s*/\s*style\s*&gt;&#39;, re.I) # style
  re_br = re.compile(&#39;&lt;br\s*?/?&gt;&#39;) # 处理换行
  re_h = re.compile(&#39;&lt;/?\w+[^&gt;]*&gt;&#39;) # HTML标签
  re_comment = re.compile(&#39;&lt;!--[^&gt;]*--&gt;&#39;) # HTML注释
  s = re_cdata.sub(&#39;&#39;, htmlstr) # 去掉CDATA
  s = re_script.sub(&#39;&#39;, s) # 去掉SCRIPT
  s = re_style.sub(&#39;&#39;, s) # 去掉style
  s = re_br.sub(&#39;\n&#39;, s) # 将br转换为换行
  s = re_h.sub(&#39;&#39;, s) # 去掉HTML 标签
  s = re_comment.sub(&#39;&#39;, s) # 去掉HTML注释
  # 去掉多余的空行
  blank_line = re.compile(&#39;\n+&#39;)
  s = blank_line.sub(&#39;\n&#39;, s)
  s = replaceCharEntity(s) # 替换实体
  return s
##替换常用HTML字符实体.
# 使用正常的字符替换HTML中特殊的字符实体.
# 你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
# @param htmlstr HTML字符串.
def replaceCharEntity(htmlstr):
  CHAR_ENTITIES = {&#39;nbsp&#39;: &#39; &#39;, &#39;160&#39;: &#39; &#39;,
           &#39;lt&#39;: &#39;&lt;&#39;, &#39;60&#39;: &#39;&lt;&#39;,
           &#39;gt&#39;: &#39;&gt;&#39;, &#39;62&#39;: &#39;&gt;&#39;,
           &#39;amp&#39;: &#39;&amp;&#39;, &#39;38&#39;: &#39;&amp;&#39;,
           &#39;quot&#39;: &#39;&quot;&#39;&#39;&quot;&#39;, &#39;34&#39;: &#39;&quot;&#39;, }
  re_charEntity = re.compile(r&#39;?(?P&lt;name&gt;\w+);&#39;)
  sz = re_charEntity.search(htmlstr)
  while sz:
    entity = sz.group() # entity全称,如&gt;
    key = sz.group(&#39;name&#39;) # 去除&amp;;后entity,如&gt;为gt
    try:
      htmlstr = re_charEntity.sub(CHAR_ENTITIES[key], htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
    except KeyError:
      # 以空串代替
      htmlstr = re_charEntity.sub(&#39;&#39;, htmlstr, 1)
      sz = re_charEntity.search(htmlstr)
  return htmlstr
def repalce(s, re_exp, repl_string):
  return re_exp.sub(repl_string, s)
if __name__ == &#39;__main__&#39;:
  s = file(&#39;test.html&#39;).read()
  news = filter_tags(s)
  print news
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung regulärer Ausdrücke in Python zum Filtern oder Ersetzen von HTML-Tags. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

So speichern Sie die Evaluierungsfunktion So speichern Sie die Evaluierungsfunktion May 07, 2024 am 01:09 AM

So speichern Sie die Evaluierungsfunktion

See all articles