Python ValueError报错求助:处理Cooper Kupp橄榄球数据时字符串转浮点数失败
问题根因
报错ValueError: could not convert string to float: 'AP MVP-3, AP OPoY-5, AP ORoY-2, AP1, PB'是因为代码硬把Cooper Kupp的球员荣誉字符串当成数值转成float了——这字符串里全是奖项缩写,根本不是数字,转换自然失败。
修复方案
1. 给浮点数转换加安全校验
写个工具函数,先尝试转换,失败就返回原字符串或空值,避免崩溃:
def safe_to_float(text): try: return float(text.strip()) except ValueError: # 非数值内容直接返回原文本,或者根据需求返回空字符串 return text.strip()
然后把代码里所有直接用float(cell.get_text())的地方,替换成safe_to_float(cell.get_text())。
2. 针对性调整字段处理逻辑
如果那个字段本来就可能存荣誉(不是数值),得先判断字段类型:
- 找到
player_recur函数里处理该列的位置 - 确认列标识(比如列名或索引),如果是荣誉列,直接跳过浮点数转换,把原字符串写入表格就行
示例修改(对应报错相关代码段)
找到player_recur中处理单元格数据的循环,改成这样:
# 遍历单元格时的处理逻辑 for cell in table.find_all('td'): cell_content = cell.get_text(strip=True) # 安全转换或保留原内容 processed_content = safe_to_float(cell_content) # 写入表格 writer.writerow([..., processed_content, ...])
内容的提问来源于stack exchange,提问作者World Mapper 2
相关产品推荐
相关产品推荐

