Heim  >  Fragen und Antworten  >  Hauptteil

Behalten Sie beim Teilen von Zeichenfolgen bestimmte HTML-Tags bei

Ich muss eine Zeichenfolge durch eine bestimmte Anzahl von Tags aufteilen (<li>, <lu> ...). Ich habe den regulären Ausdruck herausgefunden

pattern = <li>|<ul>|<ol>|<li>|<dl>|<dt>|<dd>|<h1>|<h2>| <h3>|<h4>|<h5>|<h6>re.split

Im Grunde erledigt es die Arbeit

test_string = '<p> Some text some text some text. </p> <p> Another text another text </p>. <li> some list </li>. <ul> another list </ul>'
res = re.search(test_string, pattern) 
-> `['<p> Some text some text some text. </p> <p> Another text another text </p>. ', ' some list </li>. ', ' another list </ul>']`

Aber ich möchte die öffnenden und schließenden Tags erfassen und die Tags im geteilten Text behalten. Etwas Ähnliches

['<p> Some text some text some text. </p> <p> Another text another text </p>. ', '<li> some list </li>. ', '<ul>another list </ul>']`

P粉841870942P粉841870942183 Tage vor306

Antworte allen(1)Ich werde antworten

  • P粉787806024

    P粉7878060242024-04-01 10:26:40

    回答您的具体问题:

    <(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*

    并且匹配而不是拆分。

    \1 指的是开始标记中捕获的内容。

    类似于:

    for match in re.finditer(r"<(p|li|ul|ol|dl|h1|h2|h3|h4|h5|h6)>[^<]*", subject, re.DOTALL):

    但是,在大多数真实情况下,这不足以处理 HTML,您应该考虑 DOM 解析器。

    Antwort
    0
  • StornierenAntwort