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

NBA数据爬取时字符串转int报ValueError: invalid literal for int()错误求助

问题排查与修复方案

核心报错原因

  • 判断逻辑完全错误:你写的if('data-stat="visitor_pts"')这类判断永远为真,因为Python中非空字符串的布尔值都是True,和当前row是否包含对应字段没有任何关系。循环遍历rows时,只要遇到不包含得分字段的行,partition方法提取到的结果就会是空字符串'',这就是你报错invalid literal for int() with base 10: ''的来源。你看到打印出来的得分正常,只是因为部分行确实包含对应字段,循环到无对应字段的行时才会触发报错。
  • 缺少类型转换与空值校验:你当前代码直接对字符串类型的得分做大小比较和减法运算,就算没有空值也会抛出类型错误。

修复步骤

  1. 修正所有条件判断,先校验当前行是否包含所需的全部字段,不包含就直接跳过
  2. 提取得分后先去除首尾空白字符,再做非空校验和整数类型转换
  3. 增加异常捕获逻辑兼容异常格式的行

修改后代码示例

for row in rows:
    row_str = str(row)
    # 校验当前行是否包含所有需要的字段,不包含直接跳过
    required_keys = [
        'data-stat="visitor_team_name"',
        'data-stat="home_team_name"',
        'data-stat="visitor_pts"',
        'data-stat="home_pts"'
    ]
    if not all(key in row_str for key in required_keys):
        continue
    
    # 提取球队信息
    away_team = row_str.partition('data-stat="visitor_team_name">')[2].partition("</a")[0].partition('.html">')[2] 
    print(f"Away Team: {away_team}")
    home_team = row_str.partition('data-stat="home_team_name">')[2].partition("</a")[0].partition('.html">')[2] 
    print(f"Home Team: {home_team}")

    # 提取得分并去除首尾空白
    away_pts_str = row_str.partition('data-stat="visitor_pts">')[2].partition("<")[0].strip()
    home_pts_str = row_str.partition('data-stat="home_pts">')[2].partition("<")[0].strip()
    print(f"Away points: {away_pts_str}")
    print(f"Home points: {home_pts_str}")

    # 安全转换为整数
    try:
        away_pts = int(away_pts_str)
        home_pts = int(home_pts_str)
    except ValueError:
        print(f"当前行得分格式异常,已跳过,客场得分值:{repr(away_pts_str)},主场得分值:{repr(home_pts_str)}")
        continue

    # 计算分差与胜者
    if away_pts > home_pts:
        point_diff = away_pts - home_pts
        winner = away_team
    else:
        point_diff = home_pts - away_pts
        winner = home_team
    print(f"分差:{point_diff},获胜队伍:{winner}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:45:05