提问者:小点点

用Python选择和重新排列HTML元素


下面的非结构化表元素如何结构化,而不使用任何库。

<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。


共1个答案

匿名用户

您可以通过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>

相关问题