使用BeautifulSoup删除HTML表格内首个td内容非数字的tr行
实现代码
你可以直接使用以下代码完成需求:
from bs4 import BeautifulSoup html1 = """ <table> <tbody><tr> <th>Id</th> <th>Month</th> </tr> <tr><td>1</td><td>January</td></tr> <tr><td>2</td><td>February</td></tr> <tr><td>3</td></tr> <tr><td>4</td></tr> <tr><td>5</td><td>October</td></tr> <tr><td>6</td><td>December</td></tr> <tr><td>7</td></tr> <tr><td>Correct</td></tr> </tbody></table> """ # 解析HTML内容 soup = BeautifulSoup(html1, "html.parser") # 遍历所有表格行 for tr in soup.find_all("tr"): first_td = tr.find("td") # 仅删除包含td、且首个td内容不是纯数字的行 if first_td and not first_td.text.strip().isdigit(): tr.decompose() # 输出处理后的完整表格 print(soup)
逻辑说明
- 解析时使用Python内置的
html.parser即可,不需要额外安装其他解析器 - 表头行全部由
<th>标签组成,遍历判断时会自动跳过保留,不需要额外做过滤处理 - 对首个
<td>的内容做了首尾空白去除的兼容处理,避免内容前后有空格导致数字识别失败 - 调用
decompose()方法删除指定行后,原有表格的其他结构会完整保留
内容的提问来源于stack exchange,提问作者user7864386
相关产品推荐
相关产品推荐

