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




