You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BS4仅遍历tbody中tr的td并为非0值单元格添加class属性

实现代码

你可以参考以下代码完成需求,全程不会修改thead部分的内容:

from bs4 import BeautifulSoup

# 已有的BS4对象加载示例,如果你已经生成了soup对象可直接跳过这步
html_str = """
你的完整HTML字符串
"""
soup = BeautifulSoup(html_str, "html.parser")

# 定位tbody标签
tbody_tag = soup.find("tbody")

# 遍历tbody内所有行
for row in tbody_tag.find_all("tr"):
    # 取每行最后2个td单元格
    target_cells = row.find_all("td")[-2:]
    for cell in target_cells:
        # 转换单元格内容为数值,兼容整数、小数、负数
        try:
            cell_val = float(cell.text.strip())
            # 数值不为0时追加class
            if cell_val != 0:
                # 写法兼容单元格已有class的场景,不会覆盖原有类
                cell["class"] = cell.get("class", []) + ["highlight-non-zero"]
        except ValueError:
            # 若单元格存在非数值内容可在此处自定义处理逻辑,默认跳过
            continue

# 输出修改后的HTML验证结果
print(soup.prettify())
代码说明
  • 仅操作tbody下的内容,完全不触碰thead标签,不会修改表头的任何属性和内容
  • 用切片[-2:]取最后两个单元格,无需硬编码单元格索引位置,适配性更高
  • 追加class的写法不会覆盖单元格原有class属性,只会新增你需要的样式类
  • 新增了异常捕获逻辑,避免单元格存在非数值内容时程序报错

内容的提问来源于stack exchange,提问作者Piotrek Leśniak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:36:03