使用openpyxl识别含指定部分字符串的行但无法删除问题
解决Excel工作表删除指定字符串行失败的问题
你这段代码能识别目标行但无法完成删除,核心问题是正向遍历行时删除行会导致后续行的索引错乱:删除一行后,后面的行自动上移一位,但循环仍按原顺序迭代,会跳过本该处理的行。
解决方案1:反向遍历行
从最后一行往起始行遍历,删除后面的行不会影响前面行的位置,避免索引偏移:
# 转成列表后反向遍历,确保迭代顺序正确 for row in reversed(list(sheet10.iter_rows(2, sheet.max_row-1))): message = row[10].value if message is not None and 'My partial string' in message: print(row[10].value) print(row[0].row) sheet10.delete_rows(row[0].row, 1)
解决方案2:先收集行号再批量删除
先把所有需要删除的行号存起来,再从大到小依次删除,同样避免索引错乱:
# 第一步:收集所有待删除的行号 rows_to_delete = [] for row in sheet10.iter_rows(2, sheet.max_row-1): message = row[10].value if message is not None and 'My partial string' in message: rows_to_delete.append(row[0].row) # 第二步:从大到小删除行 for row_num in reversed(rows_to_delete): sheet10.delete_rows(row_num, 1)
内容的提问来源于stack exchange,提问作者PiAlx
相关产品推荐
相关产品推荐

