r1 = re.compile('(?<!\\<tr\\>)\\<td', re.IGNORECASE)
r2 = re.compile('\\<\\/tr>', re.IGNORECASE)
test = '<table> <tr><td>1<td>2<td>3</tr> <tr><td>1<td>2<td>3</tr> </table>'
test = r1.sub('</td><td', test)
test = r2.sub('</td></tr>', test)
print(test)
Использование Beautiful Soup для таблиц HTML, в которых отсутствуют теги </td>