Перерыв python l oop, когда он находит 2 последовательных пустых клетки - PullRequest
0 голосов
/ 04 марта 2020

Я хочу сосчитать строки и столбцы, присутствующие в таблице Excel, используя al oop, и l oop должен прекратить работу при обнаружении 2 (или более) последовательных пустых ячеек.

row_count=0
col_count=0

for a in range(1,temp.max_row+1):
   if temp.cell(row=a,column=2).value!=None:
       row_count= row_count+1
   else:
       break
for b in range(2,temp.max_column+1):
   if temp.cell(row=8,column=b).value!=None:
       col_count=col_count+1
   else:
       break
print(row_count)
print(col_count)

Однако я не могу получить правильный результат с помощью используемого метода.

Ответы [ 2 ]

0 голосов
/ 07 марта 2020

спасибо за ответ на мой вопрос. Я сделал несколько изменений, и приведенный ниже код, кажется, лучше всего работает для моих данных. (Целью кода является измерение размеров таблицы в листе Excel (лист содержит несколько таких таблиц). считая, если он встречает, скажем, 2 последовательные пустые ячейки, прежде чем он достигнет другой таблицы.)

# A) For 2 consecutive empty cells- 

#for rows: 
for a in range(4, temp.max_row+1):
    if (temp.cell(row=a, column=2).value==None and temp.cell(row=a+1, column=2).value==None): #check if current cell & the following cell is not empty. if empty, it stops counting & exits the loop.
        break
    else:
        row_count=row_count+1


#for columns: 
for b in range(2,temp.max_column+1):
    if (temp.cell(row=20, column=b).value==None and temp.cell(row=20,column=b+1).value==None):
        break
    else:
        col_count = col_count+1

0 голосов
/ 04 марта 2020

Вам нужно проверить две соседние ячейки в каждой итерации:

for a in range(1,temp.max_row+1):
   # Check if the cell is not empty
   if temp.cell(row=a, column=2).value is not None: 
       row_count = row_count + 1

   # Else the cell is empty, check if the next one is also empty
   elif temp.cell(row=a + 1, column=2).value is None: 
       break

for b in range(2,temp.max_column+1):
   if temp.cell(row=8, column=b).value is not None:
       col_count = col_count + 1
   elif temp.cell(row=8, column=b + 1).value is None:
       break
...