用 class 名称搜索并替换 HTML 标签,并用非 HTML 标签替换
Search and replace HTML tag by class name and replace with non-HTML tag
我想用 class 名称“figure”替换所有 div
标签
<div class="figure">
<p>Some content.</p>
</div>
带有非 HTML 标签(在我的例子中是 Hugo shortcode)
{{% row %}}
<p>Some content.</p>
{{% /row %}}
replace html tags with other html tags 很容易,但如果涉及非 html 标签,我不知道该怎么做。
如果您使用记事本或具有 search and replace
的任何其他文本编辑器
您可以替换的功能
'<div class="figure">'
与 '{{% row %}}'
和 '</div>'
与 '{{% /row %}}'
.
我看不到“简单”的解决方案,因为短代码也可以包含 /
、<
、>
字符,因此您不能将它们作为文档树的一部分.
一个解决方案是用自定义标签替换 <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 %}}
我想用 class 名称“figure”替换所有 div
标签
<div class="figure">
<p>Some content.</p>
</div>
带有非 HTML 标签(在我的例子中是 Hugo shortcode)
{{% row %}}
<p>Some content.</p>
{{% /row %}}
replace html tags with other html tags 很容易,但如果涉及非 html 标签,我不知道该怎么做。
如果您使用记事本或具有 search and replace
您可以替换的功能
'<div class="figure">'
与 '{{% row %}}'
和 '</div>'
与 '{{% /row %}}'
.
我看不到“简单”的解决方案,因为短代码也可以包含 /
、<
、>
字符,因此您不能将它们作为文档树的一部分.
一个解决方案是用自定义标签替换 <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 %}}