У меня есть лист Excel с несколькими списками в одном столбце, но разделенными пустыми ячейками. Я пытаюсь сохранить первый из этих списков, но я знаю только адрес ячейки заголовка для этого списка. Длина каждого списка (т. Е. Количество строк) может варьироваться, поэтому я не могу зафиксировать общее количество строк для перебора.
Мое решение было сосредоточено вокруг поиска первой пустой ячейкипри итерации по столбцу, начиная со строки заголовка списка.
'' '# load "target" сводная рабочая книга data_wb = load_wb ("book3.xlsx")
# select worksheet to paste data
data_ws = data_wb["Sheet1"]
''' In Excel file "book3.xlsx",
List 1 in Range ($A$4:$A$9),
List 2 in Range ($A$12:$A$20),
List 3 in Range ($A$22:$A$27)'''
lastrow_list=[]
for row in data_ws.iter_rows(min_col=1,max_col=1, min_row = 4, max_row=100):
for cell in row:
if cell.value == None:
food_list.append(first_list)
break
else:
first_list.append(cell.value)
continue
print(food_list[0])
print(food_list[1])
print(len('food_list'))
' '' '' '
['Fruit List', 'apple', 'banana', 'orange', 'grape', 'kiwi', 'Vegetable
List', 'broccoli', 'kale', 'cauliflower', 'onion', 'potato', 'carrot',
'lettuce', 'kohlrabi', 'Fish List', 'salmon', 'cod', 'tuna', 'trout',
'halibut']
['Fruit List', 'apple', 'banana', 'orange', 'grape', 'kiwi', 'Vegetable
List', 'broccoli', 'kale', 'cauliflower', 'onion', 'potato', 'carrot',
'lettuce', 'kohlrabi', 'Fish List', 'salmon', 'cod', 'tuna', 'trout',
'halibut']
9
'' '
Выходные данные из приведенного выше кода дают список списков (я показываю первые два элемента этого списка), где каждый элемент представляет собой список всех трех списков Excel вместе взятых. Я не уверен, почему есть 9 из этих комбинированных списков. В конце я хотел бы получить только «Список фруктов» (не «Список овощей» или «Список рыб»).
Я думал о том, чтобы с помощью описанного выше подхода остановить цикл If после достижения первой пустой строки, чтобы список содержал только значения ячеек для строк до первой пустой ячейки.
'''Файл Excel, содержащий 3 списка в одном столбце, разделенных пустыми строками. Список 1: А4: А9, Список 2: А12: А20, Список 3: А22: А27
Row Col A
1
2
3
4 Fruit List <-- "Iterate down Col A starting at Row 4"
5 apple
6 banana
7 orange
8 grape
9 kiwi
10 <-- "Stop iteration at the first empty cell
11
12 Vegetable List
13 broccoli
14 kale
15 cauliflower
16 onion
17 potato
18 carrot
19 lettuce
20 kohlrabi
21
22 Fish List
23 salmon
24 cod
25 tuna
26 trout
27 halibut <-- "Last non-empty row in worksheet"
28
' ''