我有这样的excel文档,包含产品ID列表。我需要创建一个评估数组。
所以,我的算法如下: 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] 等
答案 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中使用括号。
祝你好运!