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

使用range()读取表格数据时遭遇int与list无法拼接的TypeError求助

问题分析与解决

错误原因

  1. rows/columns 类型错误:报错信息can only concatenate list (not "int") to list说明你定义的rows是列表而非整数,直接执行rows + 1属于列表与整数相加,违反语法规则。
  2. range() 参数错误:range()函数的参数必须是整数类型,你将rows + 1转为字符串str(rows + 1)传入,会导致类型不匹配。

修正步骤

1. 正确获取整数类型的行数和列数

先确保rows和columns是整数,通常通过获取表格行/列元素列表的长度来实现:

# 获取表格所有行的元素列表,取长度得到总行数
rows = len(driver.find_elements(By.XPATH, "//table[@name='BookTable']/tbody/tr"))
# 获取表头的列数(或第一行的列数)
columns = len(driver.find_elements(By.XPATH, "//table[@name='BookTable']/tbody/tr[1]/td"))

2. 修正循环中的range()用法

range()的参数必须是整数,直接传入整数即可,无需转为字符串:

# 从第2行开始遍历(跳过表头)
for r in range(2, rows + 1):
    for c in range(1, columns + 1):
        t1 = driver.find_element(By.XPATH, f"//table[@name='BookTable']/tbody/tr[{r}]/td[{c}]").text
        print(t1)

这里用f-string拼接XPATH,比字符串相加更简洁易读。

关键说明

  • 如果你之前是通过find_elements获取rows(比如rows = driver.find_elements(...)),此时rows是元素列表,必须用len(rows)获取整数行数。
  • range(start, end)的end是开区间,所以要写rows + 1才能遍历到最后一行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:07:18