Quiero reemplazar todas las etiquetas div
con el nombre de clase "figura"
<div class="figure">
<p>Some content.</p>
</div>
Con una etiqueta que no es HTML (en mi caso, es un código corto de Hugo)
{{% row %}}
<p>Some content.</p>
{{% /row %}}
Es fácil reemplazar etiquetas html con otras etiquetas html, pero no tengo idea de cómo hacerlo. si hay etiquetas que no son HTML involucradas.
2 respuestas
No veo una solución "fácil", porque los códigos cortos pueden contener caracteres /
, <
, >
también, por lo que no puede tenerlos como parte del árbol del documento.
Una solución es reemplazar <div class="figure">
con una etiqueta personalizada y, al final, reemplazar estas etiquetas personalizadas con sus códigos cortos:
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)
Huellas:
<div>
{{% row %}}
<p>Some content.</p>
{{% /row %}}
</div>
{{% row %}}
<p>Some other content.</p>
{{% /row %}}
Si usa el Bloc de notas o cualquier otro editor de texto que tenga search and replace
Funciones que puedes simplemente reemplazar
'<div class="figure">'
con '{{% row %}}'
y '</div>'
con '{{% /row %}}'
.
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.