下面的非结构化表元素如何结构化,而不使用任何库。
<table>
<tfoot>
<tr><td>Sum</td><td>$180</td></tr>
</tfoot>
<tbody>
<tr><td>January</td><td>$100</td></tr>
</tbody>
</table>
所需的表:
<table>
<tbody>
<tr><td>January</td><td>$100</td></tr>
</tbody>
<tfoot>
<tr><td>Sum</td><td>$180</td></tr>
</tfoot>
</table>
维护html元素的属性顺序很重要。我试过用BeautifulSoup。它改变了顺序。请建议任何解决此问题的pythonic方法,它不需要使用beautifulsoup或lxml。
您可以通过re
使用正则表达式:
import re
s = """
<table>
<tfoot>
<tr><td>Sum</td><td>$180</td></tr>
</tfoot>
<tbody>
<tr><td>January</td><td>$100</td></tr>
</tbody>
</table>
"""
new_s = re.sub('\<tr\>.*?\</tr\>', '{}', s).format(*re.findall('\<tr\>.*?\</tr\>', s)[::-1])
输出:
<table>
<tfoot>
<tr><td>January</td><td>$100</td></tr>
</tfoot>
<tbody>
<tr><td>Sum</td><td>$180</td></tr>
</tbody>
</table>