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

Python+openpyxl使用列表推导式批量重命名多个Worksheet问题

报错原因

你编写的代码直接遍历了names列表的字符串值,将字符串作为下标传入工作表列表的索引位,不符合列表索引必须为整数/切片的语法要求,因此触发类型错误。

正确实现代码

因为Python列表推导式中不支持直接写赋值语句,我们可以通过setattr方法完成属性赋值,有两种可行写法:

  1. 按工作表与名称顺序一一匹配(推荐,无需调用私有属性_sheets)
names = ['Ja', 'Ro', 'Ra', 'El']
[setattr(sheet, 'title', name) for sheet, name in zip(w_book, names)]
  1. 按下标索引匹配
names = ['Ja', 'Ro', 'Ra', 'El']
[setattr(w_book._sheets[i], 'title', name) for i, name in enumerate(names)]

注意事项

上述写法会生成一个全为None的临时列表,会造成不必要的内存开销,仅适合需要表达式返回值的特殊场景。常规使用场景下你原本的for循环写法可读性更高、性能更好,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:03