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

使用BeautifulSoup解析HTML表格td标签在for循环中存入字典的方法

错误原因
  • 你的推导式中循环对象是<tr>标签,没有拆分单个<tr>下的两个<td>元素,直接把整行的文本同时作为键和值,所以出现键值相同的问题
  • 缺少空字符串替换为'None'的逻辑
正确实现

首先封装公共的文本清理方法,避免重复写冗余逻辑:

def clean_text(raw):
    res = raw.replace('\u2002', '').replace('\n', '').strip()
    return res if res else 'None'

常规循环写法(可读性更高,推荐)

results = {}
for tr in table_data:
    tds = tr.find_all('td')
    # 过滤掉td数量不足2的异常行,避免索引报错
    if len(tds) >= 2:
        k = clean_text(tds[0].text)
        v = clean_text(tds[1].text)
        results[k] = v

字典推导式写法(和上面逻辑完全等效)

results = {
    clean_text(tr.find_all('td')[0].text): clean_text(tr.find_all('td')[1].text)
    for tr in table_data
    if len(tr.find_all('td')) >= 2
}

注意:因为字典的键具有唯一性,如果表格第一列存在重复内容,后出现的行的值会覆盖先出现的行的值,属于正常特性。

内容的提问来源于stack exchange,提问作者Simon Palmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:51:02