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

巴扎黑
巴扎黑Original
2017-09-26 10:36:022727Durchsuche

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: (?P8a11bc632ea32a57b3e3693c7987c420....)
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("//<!
CDATA\[[>]∗//
\]>", re.I) #匹配CDATA
  re_script = re.compile(&#39;<\s*script[^>]*>[^<]*<\s*/\s*script\s*>&#39;, re.I) # Script
  re_style = re.compile(&#39;<\s*style[^>]*>[^<]*<\s*/\s*style\s*>&#39;, re.I) # style
  re_br = re.compile(&#39;<br\s*?/?>&#39;) # 处理换行
  re_h = re.compile(&#39;</?\w+[^>]*>&#39;) # HTML标签
  re_comment = re.compile(&#39;<!--[^>]*-->&#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;<&#39;, &#39;60&#39;: &#39;<&#39;,
           &#39;gt&#39;: &#39;>&#39;, &#39;62&#39;: &#39;>&#39;,
           &#39;amp&#39;: &#39;&&#39;, &#39;38&#39;: &#39;&&#39;,
           &#39;quot&#39;: &#39;"&#39;&#39;"&#39;, &#39;34&#39;: &#39;"&#39;, }
  re_charEntity = re.compile(r&#39;?(?P<name>\w+);&#39;)
  sz = re_charEntity.search(htmlstr)
  while sz:
    entity = sz.group() # entity全称,如>
    key = sz.group(&#39;name&#39;) # 去除&;后entity,如>为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

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!

Stellungnahme:
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