suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Reguläre Ausdrücke mit AND in Python

Ich kämpfe schon seit einiger Zeit damit, den richtigen regulären Ausdruck für die folgende Aufgabe zu finden:

Ich möchte mit Python Daten aus Tabellen-Tags in einer HTML-Datei entfernen. Mein Ansatz hierfür besteht darin, Folgendes rekursiv auszuführen (die HTML-Zeilen zwischen Tags als Zeichenfolgen zu speichern):

s = "Erforderlicher Inhalt"

  1. Weisen Sie die Zeichenfolge s der Zeichenfolge neu zu und entfernen Sie alles zwischen den „<...>“.

s = re.sub('<{1}( ist nicht '<' 也不是 '>').*>{1}', '', s)

  1. Wiederholen Sie dies, bis Sie s="gewünschten Inhalt" übrig haben.

Meine Frage ist, wie man den fett gedruckten Teil in Klammern umsetzt. Danke. Dein Text

Ich habe es versucht

import re

test_str = '<td style="color:blue">Hello</td>'
test_str = re.sub('<{1}^[<>].*>{1}','',test_str)
print(test_str)

Sie können sehen, dass meine Testsaite gleich bleibt. Was habe ich falsch gemacht?

Der obige Code, den ich erwarte, gibt mir test_str = „Hallo“, ich füge das wieder in diese Methode ein, die dann das „“ extrahiert und mir „Hallo“ gibt.

P粉988025835P粉988025835440 Tage vor638

Antworte allen(1)Ich werde antworten

  • P粉348088995

    P粉3480889952023-09-15 09:00:18

    要否定字符类,应将 ^ 放在 [ 之后。此外,您不需要为出现一次的字符指定 {1}

    test_str = re.sub('<[^<>]*>', '', test_str)
    

    但是,请注意,使用像 BeautifulSoup 这样的专用 HTML 解析器而不是正则表达式来从 HTML 获取数据更为合适。

    Antwort
    0
  • StornierenAntwort