Избавиться от rowspan Python

Подскажите, как преобразовать html-таблицу, чтобы вместо rowspan вставить дублирующие строки? Чтобы таблица была равна по строкам и столбцам. Необходимо для парсера, который данные отправит в базу данных.

<table border="1" class="tbl">
     <tr>
       <td>Обычная ячейка 1</td>
       <td rowspan="2">Занимает 2 строки</td>
       <td>Обычная ячейка 3</td>
     </tr>
     <tr>
       <td>Обычная ячейка (1)</td>
       <td>Обычная ячейка (3)</td>
     </tr>
</table>

Преобразовать в

<table border="1">
  <tr>
    <td>Обычная ячейка 1</td>
    <td>Занимает 2 строки</td>
    <td>Обычная ячейка 3</td>
  </tr>
  <tr>
    <td>Обычная ячейка (1)</td>
    <td>Занимает 2 строки</td>
    <td>Обычная ячейка (3)</td>
  </tr>
</table>

Вот, что пробовал, ячейка из rowspan копируется, но данные не смещаются.

import requests
from pyquery import PyQuery

def formatTableHTML(destination, res_destination):

    html = ""
    with open(destination, 'r', encoding="utf-8") as f:
        html = f.read()

    doc = PyQuery(html)

    table = doc('.tbl')

    res_str = "<table>"


    l = 0
    count_row = 0
    info_rowspan = {}
    info = {}
    for c in table('tr').items():
                
        l += 1
                    
        pq_tr = PyQuery(c.html())
        count_col = 0
        for z in pq_tr('td').items():
            rs = z.attr('rowspan')
 
            if(rs == None):
                info[str(count_row)+'_'+str(count_col)] = z.html()
            else:
            
                irs = int(rs)
                i = count_row
                while i < (count_row + irs):
                    info_rowspan[str(i)+'_'+str(count_col)] = z.html()
                    i = i + 1
            count_col += 1
        count_row += 1


    i = 0
    count_col_one = 8
    while i < count_row:
        res_str += '<tr>'
        n = 0
        while n < count_col_one:
            if str(i)+'_'+str(n) in info_rowspan:
                res_str += '<td>'+info_rowspan[str(i)+'_'+str(n)]+'</td>'  
            else:
                if str(i)+'_'+str(n) in info:
                    res_str += '<td>'+info[str(i)+'_'+str(n)]+'</td>' 
                else:
                    res_str += '<td>-</td>'  
            n += 1

        res_str += '</tr>'
        i += 1
    res_str += '</table>'


    # Открываем файл в режиме записи ('w')
    with open(res_destination, 'w', encoding="utf-8") as file:

    # Записываем строку в файл
    file.write(res_str)


formatTableHTML("file.html", "new_file.html")

Ответы (0 шт):