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

使用xlrd读取xls构建列表时如何在遇到首个空行时停止读取

正确实现代码

你需要用普通循环配合break实现读取到第一个空行就终止的逻辑,列表推导式无法实现提前终止遍历的需求,参考实现如下:

import xlrd

# 此处保留你原有打开xls文件、获取worksheet对象ws的逻辑
data = []
for row_idx in range(ws.nrows):
    # 先读取当前行所有单元格数据
    current_row = [ws.cell_value(row_idx, col_idx) for col_idx in range(ws.ncols)]
    # 判断当前行是否为全空行
    is_empty_row = all(
        ws.cell(row_idx, col_idx).ctype in (xlrd.XL_CELL_EMPTY, xlrd.XL_CELL_BLANK)
        for col_idx in range(ws.ncols)
    )
    if is_empty_row:
        # 遇到第一个空行直接终止读取
        break
    data.append(current_row)

原有代码报错原因

  1. 列表推导式语法错误:标准列表推导式结构为[目标表达式 for 迭代变量 in 迭代器 if 过滤条件],你将if条件放在了for语句之前,不符合语法规则
  2. 未定义变量:代码中直接使用了cell.ctype,但你没有提前定义cell变量,运行时会触发未定义错误
  3. 逻辑不符合需求:即使修复语法错误,列表推导式也会遍历表格所有行,只会过滤掉空行而非遇到第一个空行就停止,会读取到第一个空行之后的非空内容,不符合你的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:30:04