es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. Reemplaza el texto en td usando BeautifulSoup. No puedo realizar la tarea que me has encomendado sin más información. ¿Puedes proporcionarme más detalles sobre lo que necesitas exactamente? No puedo realizar la tarea que me ha encomendado sin más información. ¿Puede proporcionarme más detalles sobre lo que necesita exactamente? Para reemplazar el texto en td usando BeautifulSoup, primero debe importar la biblioteca BeautifulSoup y luego usar el método find_all () para encontrar todas las etiquetas td en el documento. A continuación, puede usar el método replace_with () para reemplazar el texto en cada etiqueta td con el nuevo texto. El siguiente es un ejemplo de código: from bs4 import BeautifulSoup # Cargar documento HTML documento = BeautifulSoup(html, ‘html.parser’) # Encontrar todas las etiquetas td en el documento td_tags = documento.find_all(‘td’) # Reemplazar el texto en cada etiqueta td con el nuevo texto for td_tag in td_tags: td_tag.replace_with(nuevo_texto)

Estoy intentando analizar una tabla y editar el texto en la celda según lo que tengo en un QTableWidget, manteniendo tanto como sea posible el estilo original. La formatación de las entradas de td es inconsistente y no puedo encontrar una buena manera de editar correctamente el texto según lo que espero.

“`
soup = BeautifulSoup(body, "html.parser")
tables = soup.findall('table')
for table in tables:
rows = table.findall('tr')
for r, row in enumerate(rows[1:]):
cols = row.find_all('td')
for c, ele in enumerate(cols):
print(ele)
#Si simplemente hago
#ele.string = tableWidget.item(r, c).text()
#el texto se transforma como espero, pero pierde todo el estilo, como el hipervínculo
#por ejemplo pierdo toda esta etiqueta

aquí <td style="padding:.75pt .75pt .75pt .75pt">07:00</td>

<pre><code> #Si intento lo siguiente, no funciona. ele.has_attr('p') siempre es falso por alguna razón, aunque la td tenga una etiqueta <p>
if ele.has_attr('p'):
if not ele['p'].has_attr('a'):
ele[p].string = tableWidget.item(r, c).text()
else:
ele.string = tableWidget.item(r, c).text()
</code></pre>

abajo está la salida de ele, los textos encerrados en ** son los que estoy tratando de reemplazar

<td style="padding:.75pt .75pt .75pt .75pt">

<p class="MsoNormal"><span style='font-family:"Calibri",sans-serif'><a href="https:/random link" target="_blank">test</a><o:p></o:p></span></p>

</td>
<td style="padding:.75pt .75pt .75pt .75pt">

<p class="MsoNormal"><span style='font-family:"Calibri",sans-serif'>07:00<o:p></o:p></span></p>

</td>
<td style="padding:.75pt .75pt .75pt .75pt">

<p class="MsoNormal"><span style='font-family:"Calibri",sans-serif'>08:00<o:p></o:p></span></p>

</td>
<td style="padding:.75pt .75pt .75pt .75pt">**</td>
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando extraer una tabla y editar el texto en la celda según lo que tienes en un QtableWidget, manteniendo tanto como sea posible el estilo original. Para hacer esto, puedes usar la biblioteca BeautifulSoup para analizar el HTML y luego usar los métodos find_all y has_attr para localizar los elementos td y comprobar si tienen un atributo p. Una vez que has localizado los elementos td, puedes usar el atributo string para establecer el texto en el valor del QtableWidget.

Comments are closed.