如何创建一个循环,遍历每一行,直到当前值不等于前一个

时间:2016-09-05 13:14:29

标签: python openpyxl

我有这样的excel文档,包含产品ID列表。我需要创建一个评估数组。

enter image description here

所以,我的算法如下: 1)当前产品id值等于前一个值时,向产品阵列添加评估值 2)当前产品ID不等于前一个时 - 创建一个新的产品数组。

我使用openpyxl来访问xlsx文件。 但是我的循环工作不正确,无限进行。

import openpyxl
import os
import glob
from openpyxl import load_workbook
from openpyxl import Workbook

file =  load_workbook("Snippet_output.xlsx")
work_sheet = file.active


for row_num in range (3, 28):
    query = str(work_sheet.cell(row = row_num, column= 6).value)
    query_prev = str(work_sheet.cell(row = row_num-1, column= 6).value)
    evaluation = str(work_sheet.cell(row = row_num, column= 9).value)
    eval_list = []
    while True:
        eval_list.append(evaluation)
        if query == query_prev:
            break

print(eval_list)

你能帮我一个循环吗? 我的输出应该是这样的, eval_list1 = [3,2,1,2,3,2,1,2,3,1] eval_list2 = [1,3,2,1,2,3,2,3,1,1] 等

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么。我会猜到(警告:未经测试!):

START_ROW, END_ROW = 3, 27
eval_list = []
previous_id = str(work_sheet.cell(row=START_ROW-1, column=6).value)
for row_num in range (START_ROW, END_ROW+1):
  current_id = str(work_sheet.cell(row=row_num, column=6).value)
  current_result = str(work_sheet.cell(row=row_num, column=9).value)
  if current_id == previous_id:
    eval_lost.append(current_result)  # same ID, continue appending
  else:
    print (eval_list)    # different ID, print previous list 
    eval_list = []     # start new empty list for next ID
  previous_id = current_id  # update for next iteration
print (eval_list)        # 

N.b。你的问题没有指定python2或python3,根据python版本在print中使用括号。

祝你好运!