一项目运行时出现如下错误提示:
TypeError: 'int' object is not iterable错误代码最终定位于自定义函数 modify_table1() 第9行:
cells[j].text = rec_list[i][j]将此行代码修改如下,运行正常:
if isinstance(rec_list[i][j], int):
field_value = str(rec_list[i][j])
else:
field_value = rec_list[i][j]
cells[j].text = field_value
错误原因:数据类型不匹配。
错误代码(片断)如下:
def modify_table1(docx, rec_list, prime_list):
# rec_list: [(name, aqi, grade, prime),]
tb = docx.tables[0]
prime_list = get_prime_list(rec_list)
rec_count = len(rec_list)
for i in range(1, rec_count):
cells = tb.row_cells(i)
for j in range(3):
cells[j].text = rec_list[i][j]
cell_para1 = cells[j].paragraphs[0]
cell_para1.alignment = WD_ALIGN_PARAGRAPH.CENTER
cells[3].text = prime_list[i]
cell_para1 = cells[3].paragraphs[0]
cell_para1.alignment = WD_ALIGN_PARAGRAPH.CENTER
return调用函数:
def create_report(filename, rec_list):
path = "byc.docx"
docx = Document(path)
prime_list = get_prime_list(rec_list) # chinese prime
modify_para1(docx, rec_list, prime_list[0])
modify_table1(docx, rec_list, prime_list)
docx.save(filename)
return

本文介绍了一种常见的TypeError,在尝试迭代整数类型的变量时出现错误。通过检查自定义函数modify_table1()中的一段代码,发现由于尝试直接将整数赋值给cells[j].text导致了该错误。解决方案是判断rec_list[i][j]是否为整数,如果是则将其转换为字符串再进行赋值。
1395

被折叠的 条评论
为什么被折叠?



