You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python-docx中cells返回tuple而非list导致赋值报错问题

解决python-docx创建表格时的TypeError问题

嘿,这个坑我之前也踩过!咱们来一步步捋清楚问题出在哪,以及怎么解决。

错误原因

你代码里的cells = activeTable.add_row().cells,这里的cells其实是一个不可变的元组(tuple),里面装的是一个个Cell对象。你直接写cells[0] = 'xxx',相当于试图修改元组里的元素,但元组本身是不可变类型,不支持这种赋值操作,所以就触发了TypeError: 'tuple' object does not support item assignment

正确的写法

我们不能直接给元组元素赋值,但可以操作每个Cell对象的.text属性来设置单元格内容,这才是python-docx设计的正确用法。修改后的代码如下:

numCols = 2
numRows = 0 # dynamically create table
activeTable = document.add_table(rows=numRows, cols=numCols)
for actorIndex in reversed(actorsRanked):
    row_cells = activeTable.add_row().cells
    # 给第一个单元格设置文本内容
    row_cells[0].text = '{:20}'.format(actorIndex.id.get())
    # 给第二个单元格设置文本内容
    row_cells[1].text = '{:4.1}'.format(actorIndex.pains[painIndex].avg)

简单来说,就是把直接赋值给cells[0]改成给cells[0].text赋值,这样就绕过了元组不可变的限制,直接操作单元格的文本属性,完美解决报错~

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

火山引擎 最新活动