1

我想div用类名“figure”替换所有标签

<div class="figure">
    <p>Some content.</p>
</div>

带有非 HTML 标签(在我的例子中是Hugo 短代码)

{{% row %}}
    <p>Some content.</p>
{{% /row %}}

用其他html标签替换html标签很容易,但是如果涉及非html标签,我不知道该怎么做。

4

2 回答 2

1

我看不到“简单”的解决方案,因为短代码也可以包含/, <,>字符,因此您不能将它们作为文档树的一部分。

一种解决方案是<div class="figure">用自定义标签替换,最后用您的简码替换这些自定义标签:

from bs4 import BeautifulSoup

txt = '''
<div>
    <div class="figure">
        <p>Some content.</p>
    </div>
</div>

<div class="figure">
    <p>Some other content.</p>
</div>
'''

soup = BeautifulSoup(txt, 'html.parser')

for div in soup.select('div.figure'):
    t = soup.new_tag('xxx-row')
    t.contents = div.contents
    div.replace_with(t)

s = str(soup).replace('<xxx-row>', '{{% row %}}')
s = s.replace('</xxx-row>', '{{% /row %}}')

print(s)

印刷:

<div>
{{% row %}}
<p>Some content.</p>
{{% /row %}}
</div>
{{% row %}}
<p>Some other content.</p>
{{% /row %}}
于 2020-08-27T11:31:50.100 回答
0

如果您使用记事本或任何其他具有search and replace

您可以替换的功能

'<div class="figure">''{{% row %}}'和。'</div>'_'{{% /row %}}'

于 2020-08-27T10:38:26.800 回答